我在 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/