#java #spring-boot #date #swagger
#java #весенняя загрузка #Дата #swagger
Вопрос:
Я анализирую дату в службе rest, используя spring-boot и Swagger для документирования api.
На конечной точке я хочу иметь только даты без часов. И это легко достигается с @DateTimeFormat(pattern = "dd/MM/yyyy")
помощью . Обратите внимание, что я предпочитаю, чтобы дни были на первом месте, а не месяцы.
Конечная точка работает нормально при использовании curl, тогда я не думаю, что это проблема. Например, чтобы установить 30 ноября текущего года, я могу вызвать его с помощью Curl следующим образом:
curl -X GET "http://localhost:8085/app/api/endpoint?creationTime=30/11/2020" -H "accept: application/json"
И работает нормально. Но если я использую непосредственно страницу Swagger для тестирования, у меня возникают такие случаи:
Во-первых, если я установлю дату как 30/11/2020, swagger не позволит мне продолжить:
Если я задаю дату как 30.11.2020, swagger позволяет мне продолжить, но я получаю эту ошибку:
"message": "Failed to convert value of type 'java.lang.String' to required type 'java.util.Date'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@io.swagger.annotations.ApiParam @org.springframework.web.bind.annotation.RequestParam @org.springframework.format.annotation.DateTimeFormat java.util.Date] for value '11/30/2020'; nested exception is org.joda.time.IllegalFieldValueException: Cannot parse "11/30/2020": Value 30 for monthOfYear must be in the range [1,12]",
Как я уже говорил, это номер месяца 30. И для меня это имеет смысл.
Если я установлю 05/11/2020, Swagger позволит мне отправить запрос, а окончательная дата — 5 ноября, как и формат, который я определил.
Мне кажется, что swagger фильтрует меня по MM/dd/yyyy
формату, а не использует мой dd/MM/yyyy
, который действительно определен в конечной точке. Есть ли какая-либо возможность установить проверку swagger как dd/MM/yyyy
?
Примечание: используется версия swagger 2.9.2
. Версия Spring-boot 2.1.8.RELEASE
Ответ №1:
Мы можем использовать swagger ..
birthday:
description: Date of birth
type: date
format: DD/MM/YYYY
example: "30/11/2022"
Для nestjs вы можете использовать
@ApiProperty({ example: "20-09-2022", type:Date, default: 'DD/MM/YYYY', format: 'DD/MM/YYYY' })
Комментарии:
1. Обратите внимание, что вопрос связан с Java с Spring, а не с node или другими языками.
2. Извините, я не упомянул весеннюю загрузку java, в весенней загрузке это связано с типом даты, измените дату на тип данных LocalDate , он будет работать нормально Пример кода здесь @RequestHeader(обязательно = false) LocalDate StartDate,