Как сериализовать дату тела запроса в определенном формате в Feign Client?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как сериализовать дату тела запроса в определенном формате в Feign Client?

Сообщение Anonymous »

Я пытаюсь отправить запрос стороннему API, используя притворный клиент. Когда я проверяю тело запроса, оно выглядит следующим образом:
{
"requestTime": "2023-06-07T12:18:00.916+00:00"
}

но API принимает только формат даты гггг-ММ-дд'Т'мм:ЧЧ:сс.SSSZ, поэтому допустимое тело запроса будет выглядеть примерно так:
{
"requestTime": "2023-06-17T14:53:47.402Z"
}

Как настроить сериализацию формата даты в Feign Client?
Мои коды:
@FeignClient(value = "myfeign", url = "https://myfeign.com/")
public interface MyFeignClient {

@PostMapping(value = "/myfeign/", produces = APPLICATION_JSON_VALUE, consumes = APPLICATION_JSON_VALUE)
MyResponse sendRequest(MyRequest request);
}

И MyRequest генерируется из openapi-generator.
public class MyRequest {
@JsonProperty("requestTime")
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
private Date requestTime;
// getter...
}

Изменить: мой подход ниже не работает, поскольку объект запроса по-прежнему использует формат «2023-06-07T12:18:00.916+00:00». >
public class MyFeignConfig {

@Bean
public Encoder feignEncoder() {
HttpMessageConverter jacksonConverter = new MappingJackson2HttpMessageConverter(objectMapper());

HttpMessageConverters httpMessageConverters = new HttpMessageConverters(jacksonConverter);
ObjectFactory objectFactory = () -> httpMessageConverters;

return new SpringEncoder(objectFactory);
}

private ObjectMapper objectMapper() {
final String DATE_FORMAT = "yyyy-MM-dd'T'mm:HH:ss.SSSZ";
SimpleDateFormat dateFormat = new SimpleDateFormat((DATE_FORMAT));
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(dateFormat);
}

добавить конфигурацию в клиенте
@FeignClient(value = "myfeign", url = "https://myfeign.com/", configuration = "MyFeignConfig.class")
public interface MyFeignClient {

@PostMapping(value = "/myfeign/", produces = APPLICATION_JSON_VALUE, consumes = APPLICATION_JSON_VALUE)
MyResponse sendRequest(MyRequest request);
}


Подробнее здесь: https://stackoverflow.com/questions/764 ... ign-client
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Java/Джексон: как сериализовать дату в определенном формате?
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Java/Джексон: как сериализовать дату в определенном формате?
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как сериализовать дату в определенном формате?
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Feign.codec.EncodeException: ошибка преобразования тела запроса
    Anonymous » » в форуме JAVA
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Feign Client запрос подвешивает при соскоб
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

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