spring-mvc - 如何将自定义 header 添加到 Spring Data Rest 中的特定资源

标签 spring-mvc header spring-data-rest

我在 Spring Data Rest 中的一个实体有一个属性值,应将其添加到响应的 header 中。如何做到这一点?

我已经找到了使用处理程序拦截器更改默认 header (对于所有响应)的方法。我还找到了有关版本、etag 和修改的内容。 这些都不是我想要的。

header 必须在 1 个 REST 资源上设置,并且该值取决于实例/记录。

例如:Person具有属性 age 。对 Person REST 资源的每个请求(例如 GET /person/{id})必须返回值 age作为 http header (例如: age:32 )。

提前致谢。

最佳答案

根据我之前的回答,我可以看到最新版本的 SDR API 有一个方法 RepositoryRestMvcConfiguration#httpHeadersPreparer()

我可以看到这个方法在 2.6.8 中可用,但在我当前使用的 2.5.10 版本中不可用。

所以看起来你可以这样做:

@Configuration
public class MyConfiguration extends RepositoryRestMvcConfiguration
{
  @Override
  public HttpHeadersPreparer httpHeadersPreparer()
  {
    HttpHeadersPreparer preparer = new HttpHeadersPreparer(){
      @Override
      public HttpHeaders prepareHeaders(PersistentEntityResource resource, Object value)
      {
        org.springframework.http.HttpHeaders headers = super.prepareHeaders(resource);

        if(value instanceof Person){
          headers.add("age", ((Person)value).getAge());
        }
      }

    };

    return preparer;
  }
}

关于spring-mvc - 如何将自定义 header 添加到 Spring Data Rest 中的特定资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47018219/

相关文章:

spring-mvc - Spring Boot和Thymeleaf不处理模板

HTML5 水平图像放置

java - 如何手动创建 Spring Data Rest 实体响应格式

java - 如何根据结果内部对象对 mongo 聚合查询进行排序

java - 为什么 @Configuration 类没有在 Spring Boot 测试中运行?

java - Controller 路径变量绑定(bind)删除结尾空格

c - 静态结构初始化

javascript - 拦截 XMLHttpRequest javascript 的请求 header

java - Spring Data REST - @PrePersist 和@HandleBeforeCreate 之间的区别?

java - 为什么没有使用 Spring Data JPA 设置版本属性?