仅当存在特定标头时才响应 Spring RepositoryRestResource

Posted

技术标签:

【中文标题】仅当存在特定标头时才响应 Spring RepositoryRestResource【英文标题】:Spring RepositoryRestResource response only if specific headers exist 【发布时间】:2018-07-10 12:15:31 【问题描述】:

只有当 mime-type 为 application/json 时,我如何才能指定 @RepositoryRestResource 指向响应?

@RequestMapping 示例

带有Accept : application/json 的GET-Request 返回json

 @RequestMapping(path="/path", headers ="Accept=application/json")
    public String withHeader() 
        return  "this:json";
    

不带Accept : application/json 标头的GET-Request 返回html

@RequestMapping("/path" )
public String withoutHeader() 
    return  "<html>...</html>";

【问题讨论】:

【参考方案1】:

您无法开箱即用。您需要添加这样的配置

@Configuration
class RestMvcConfiguration 

  @Bean
  public RepositoryRestConfigurer repositoryRestConfigurer() 

    return new RepositoryRestConfigurerAdapter() 

      @Override
      public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) 
        config.returnBodyOnUpdate("Accept=application/json")
        config.returnBodyOnCreate("Accept=application/json");
      
    ;
  

【讨论】:

这会将响应媒体类型设置为 application/json。正确的?但是,如果客户端无法处理 json,我希望忽略整个请求。所以 Spring RepositoryRest 只有在客户端用 application/json 表示 Accept 标头时才应该响应!

以上是关于仅当存在特定标头时才响应 Spring RepositoryRestResource的主要内容,如果未能解决你的问题,请参考以下文章

仅当一个查询中存在关系时才过滤 ManyToManyField

仅当 ANSI sql 不存在表时才创建表

仅当元素具有特定子元素时才向元素添加规则

仅当父元素具有特定类时才为列表项元素设置样式[重复]

Pandas:仅当特定列中的值以开头时才选择数据框行

仅当外键存在时才保存的标准方法是啥?