Spring数据依赖于如何为内容类型json提供hal + json序列化

时间:2017-06-09 13:40:10

标签: spring-boot spring-data-rest spring-hateoas

我们使用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);
}

但转换器不用于渲染资源。

任何人都有任何关于如何解决这个问题的建议吗?

0 个答案:

没有答案