@JsonView
如何使用来自请求的like参数:
@JsonView(header="range")当响应值时,读取请求头range以排除/包含某些字段
发布于 2016-02-16 09:32:18
JsonView提供“静态”视图映射。因此,对于你的动态行为,你可以这样做:
// actual request handling is happened here
private ResponseEntity<SomeObject> processRequest();
// request handling with view limit in result
@JsonView(YourDefinedView.class)
@RequestMapping(value = "/request", headers={"range=include"})
public ResponseEntity<SomeObject> processWithView() {
return processRequest();
}
// request handling without view (no headers specified)
@RequestMapping(value = "/request")
public ResponseEntity<SomeObject> processWithoutView() {
return processRequest();
}这将映射您的客户端到相同的请求url,但取决于头,它将提供或不提供视图。而不是创建一组方法,这些方法将根据头信息使用不同的@JsonView。
但是这样,您将只限制传输到客户端的数据,整个数据负载将发生在服务器上。例如,使用数据库和JPA,如果您不想从数据库中获取所有将以javax.persistence.NamedEntityGraphs结束的数据,这将改变应用程序的一般逻辑,并且最终会产生两种不同的方法。
如果您想公开带有字段列表的自定义标头,则需要序列化自定义DTO对象或Map<String, Object> (丑陋-丑陋-丑陋)或自定义HandlerMethodReturnValueHandler。
https://stackoverflow.com/questions/35403736
复制相似问题