残りのAPIのjsonインターフェイスでsnake_caseとcamelCaseの両方をサポートしたいと考えています。spring boot REST APIでjacksonにsnake_case/camelCaseをオンデマンドで使用させることを薦めますか?
ジャクソンはデフォルトでcamelCaseを使用します。私は、ジャクソンがsnake_caseを使用することの多くの方法があります知っている:と@JsonProperty("first_name")
注釈クラス:個別
注釈のプロパティ spring.jackson.property-naming-strategy=SNAKE_CASE
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
しかし、消費者が希望のケースを要求できるようにする方法に関する情報は見つかりませんでした。だから、1のユースケースは、カスタムJSONメディアタイプを使用してコンテンツネゴシエーションを提供することができ
@RequestMapping("/my-resource")
public interface ApiController {
@RequestMapping(method = RequestMethod.POST, produces = {"application/json"})
MyResource createResource(@RequestBody MyResource myResource);
@GetMapping(value="/{resourceId}", produces = {"application/json"})
MyResource readResource(@PathVariable String resourceId);
}
:たとえば
コンテンツネゴシエーション(受け入れ、のContent-Typeヘッダ)を使用して、我々は次の例があるとしましょう
Accepts: application/vnd.snake+json
を、デフォルトapplication/json
はキャメルケースを使用するようにしましょう:ヘッダが好きです。
しかし、jacksonにコンテンツネゴシエーションに基づいて2つの異なるMapper構成を使用させる方法が見つかりません。
のように思えます価値ある目的ですが、実際にはapiの表面積(必要なテストが必要)を2倍にしています。 2つの異なる 'Mapper'を作成し、両方を試みる必要があります。そして、両方のマッピングが(潜在的に)有効である可能性があります。 [Mapper Features](https://github.com/FasterXML/jackson-databind/wiki/Mapper-Features)から* JacksonはObjectMapperを使用する前にのみ定義できるマッパーごとの設定のセットを定義します。つまり、これらの設定は、リクエストごとにオンザフライで変更することはできません。 –