← Timeline
Avatar
Shmuel Leib Melamud

Интересный опыт. Вот такой вопрос я задал GPT сегодня:

How in Spring I can make an unknown type "application/json-rpc" in the request body to be accepted and parsed as JSON?

Как на него отвечает GPT-4o? Идёт по стандартному пути:

  1. Create a custom HttpMessageConverter to handle application/json-rpc.
  2. Register the custom converter in your WebMvcConfigurer.

То есть, вот тебе целый класс для реализации конвертера, зарегистрируй его и всё получится.

А вот, что предлагает GPT-o3-mini после 8-секундного размышления:

@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
for (HttpMessageConverter<?> converter : converters) {
if (converter instanceof MappingJackson2HttpMessageConverter) {
MappingJackson2HttpMessageConverter jacksonConverter =
(MappingJackson2HttpMessageConverter) converter;
List<MediaType> supportedMediaTypes =
new ArrayList<>(jacksonConverter.getSupportedMediaTypes());
// Add your custom media type so that requests with Content-Type "application/json-rpc"
// are parsed as JSON.
supportedMediaTypes.add(MediaType.valueOf("application/json-rpc"));
jacksonConverter.setSupportedMediaTypes(supportedMediaTypes);
}
}
}
}

То есть, найди в списке уже существующих конвертеров тот, который отвечает за обработку JSON и добавь тип application/json-rpc в его список. Просто и элегантно. Разумеется, первый вариант он тоже рассматривал:

Alternatively, you can also define a bean for the converter and set its supported media types, but the approach above (extending the existing converters) is often simpler in a Spring Boot application.

👍3
To react or comment  View in Web Client