我们使用spring-data-rest来公开我们的存储库。
选择默认类型application/hal+json
可生成所需的资源和链接表示,内容公开为_embedded
,链接为_links
。
不幸的是,Firefox无法呈现application/hal+json
,如果用户使用浏览器导航api,建议用户下载hal+json
文档。
作为一种可能的解决方案,我们希望application/json
支持defaultMediaType
,如果用户明确要求,则支持hal + json。
使用application/json
作为defaultMediaType
与spring-data-rest艰难绕过spring-hateoas提供的hal + json序列化,因此资源显示为" content"和"链接"。
我试图扩展RepositoryRestConfigurerAdapter
,以这种方式覆盖configureHttpMessageConverter
@Override
public void configureHttpMessageConverters(List<HttpMessageConverter<?>> messageConverters) {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Jackson2HalModule());
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
MappingJackson2HttpMessageConverter halConverter = new TypeConstrainedMappingJackson2HttpMessageConverter(ResourceSupport.class);
halConverter.setObjectMapper(mapper);
halConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaTypes.HAL_JSON));
//make sure this is inserted first
messageConverters.add(0, halConverter);
super.configureHttpMessageConverters(messageConverters);
}
但转换器不用于渲染资源。
任何人都有任何关于如何解决这个问题的建议吗?