text/javascript
コンテンツタイプを返すRESTfulなサービスを利用したいと思います。SpringブートでのカスタムMessageConverterの登録
Spring Bootでこれを行うことができるOOTB HttpMessageConverter
がないので、私はカスタムコンバータを登録したいと思います。
@Component
public class CustomRestTemplateProvider {
public RestTemplate getCustomRestTemplate(MediaType mediaType) {
MappingJackson2HttpMessageConverter jacksonConverter = new MappingJackson2HttpMessageConverter();
jacksonConverter.setSupportedMediaTypes(Collections.singletonList(mediaType));
List<HttpMessageConverter<?>> converters = new ArrayList<>();
converters.add(jacksonConverter);
return new RestTemplate(converters);
}
}
その後、私のサービスでは、ちょうど上記の溶液が正常に動作しますが、私も試してみましたgetCustomRestTemplate(new MediaType("text", "javascript")
を呼び出す:私はこれを行うには見つけ
一つの方法は、MappingJackson2HttpMessageConverter
を変更することでRestTemplate
自体をカスタマイズすることですSpring Boot Documentation (27.1.2):
に従って、この1つのメディアタイプを処理する新しいコンバータを作成しました。新しいコンバータを作成しました:
@Component
public class TextJavascriptMessageConverter extends AbstractJackson2HttpMessageConverter {
public TextJavascriptMessageConverter(ObjectMapper objectMapper) {
super(objectMapper);
setTextJavascriptAsSupportedMediaType();
}
private void setTextJavascriptAsSupportedMediaType() {
List<MediaType> supportedMediaTypes = new ArrayList<>();
supportedMediaTypes.add(new MediaType("text", "javascript"));
setSupportedMediaTypes(supportedMediaTypes);
}
}
は、次にドキュメントのようにそれを登録しようとしました:
@Configuration
public class ApplicationConfiguration {
@Bean
public HttpMessageConverters customConverters() {
HttpMessageConverter<Object> converter = new TextJavascriptMessageConverter(new ObjectMapper());
return new HttpMessageConverters(Collections.singletonList(converter));
}
}
はそれでも、私はCould not extract response: no suitable HttpMessageConverter found for response type [class example.MyResponsee] and content type [text/javascript]
私もMappingJackson2HttpMessageConverter
を拡張しようとしましたが、それは動作しませんでしたを示すメッセージを取得しますどちらか。私は何が欠けていますか?また、このために新しいコンバータを作成するか、既存のものを変更することをお勧めしますか(最初の例で示したように)は受け入れられますか?
これはどちらもうまくいきませんでした。 – RK1