Интересный опыт. Вот такой вопрос я задал 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? Идёт по стандартному пути:
- Create a custom
HttpMessageConverter
to handleapplication/json-rpc
.- 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.