Я хочу отправить тело запроса JSON, где поля могут быть значениями перечисления.Эти значения перечисления находятся в camelCase, но значения перечисления - UPPER_SNAKE_CASE.
Классы Kotlin:
data class CreatePersonDto @JsonCreator constructor (
@JsonProperty("firstName") val firstName: String,
@JsonProperty("lastName") val lastName: String,
@JsonProperty("idType") val idType: IdType
)
enum class IdType {
DRIVING_LICENCE,
ID_CARD,
PASSPORT;
}
Моя подпись конечной точки:
@PostMapping
fun createPerson(@RequestBody person: CreatePersonDto)
HTTP-запрос:
curl -d '{ "firstName": "King", "lastName": "Leonidas", "idType": "drivingLicence" }' -H "Content-Type: application/json" -X POST http://localhost:8080/person
Я хочу, чтобы неявным образом преобразовать "DriverLicence" в DRIVING_LICENCE.
Я пытался:
org.springframework.core.convert.converter.Converter
:Это работает для @RequestParam
, но не для @RequestBody
org.springframework.format.Formatter
: я зарегистрировал этот форматер, но когда я делаю запрос, метод parse()
не выполняется.
Моя конфигурация на данный момент:
@Configuration
class WebConfig : WebMvcConfigurer {
override fun addFormatters(registry: FormatterRegistry) {
registry.addConverter(IdTypeConverter())
registry.addFormatter(IdTypeFormatter())
}
}