Использование Kotlin DTO в качестве @RequestBody в Spring Get Request завершает все запросы как неверный запросJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Использование Kotlin DTO в качестве @RequestBody в Spring Get Request завершает все запросы как неверный запрос

Сообщение Anonymous »

У меня установлен модуль jackson-kotlin

Код: Выделить всё

com.fasterxml.jackson.module
jackson-module-kotlin
2.18.1

и настроен

Код: Выделить всё

@Configuration
open class JacksonConfig {
@Bean
open fun objectMapper(): ObjectMapper {
return ObjectMapper().registerKotlinModule()
}
}
Однако, когда я пытаюсь отправить запрос на эту конечную точку

Код: Выделить всё

@PostMapping("/test")
fun test(@RequestBody promptRequest: PromptRequest): ResponseEntity {
return ResponseEntity(promptRequest.prompt, HttpStatus.OK)
}
ошибка HTTP 400 Bad Request

Код: Выделить всё

HTTP/1.1 400
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/problem+json
Transfer-Encoding: chunked
Date: Tue, 12 Nov 2024 09:00:56 GMT
Connection: close

{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "Failed to read request",
"instance": "/prompt/improve",
"properties": null
}
когда PromptRequest является классом Kotlin (данные):

Код: Выделить всё

data class PromptRequest (val prompt: String)
Однако, если PromptRequest является классом Java, например:

Код: Выделить всё

public class PromptRequest {
public String prompt;
}
Все работает нормально, и я получаю HTTP 200 OK:

Код: Выделить всё

HTTP/1.1 200
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: text/plain;charset=UTF-8
Content-Length: 42
Date: Tue, 12 Nov 2024 09:05:08 GMT

input prompt

Response code: 200; Time: 3171ms (3 s 171 ms); Content length: 12 bytes (12 B)
Я думал, что неверный запрос HTTP 400 с использованием Kotlin DTO произошел из-за отсутствия модуля Jackson Kotlin, поэтому я установил и настроил его, но это не помогло.
Мой ожидаемый результат заключается в том, что в обоих случаях он должен возвращать HTTP 200 OK. Почему этого не происходит?
В проекте смешаны Java и Kotlin. Использование Spring Boot.

Подробнее здесь: https://stackoverflow.com/questions/791 ... sts-as-bad
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»