如何使用来自请求的参数:
range
当响应值时,读取请求标头update table set col3 = (SELECT CASE WHEN (col2 is null OR col1 < col2 )
THEN col1
ELSE col2
END AS col3
FROM table
WHERE col1 is not null or col2 is not null)`.
以排除/包含某些字段
答案 0 :(得分:1)
JsonView提供&#34;静态&#34;视图映射。所以对于你的动态行为你可以这样做:
// 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();
}
这会将您的客户端映射到相同的请求网址,但根据标头,它会提供视图与否。您可以创建一组方法,根据标题信息使用不同的@JsonView
。
但是这样你只会限制传输到客户端的数据,整个数据加载将在服务器上发生。例如,对于数据库和JPA,如果您不想从数据库中获取所有数据,那么将以javax.persistence.NamedEntityGraphs
结束,这将改变应用程序的一般逻辑 - 并且在一天结束时将生成2个不同的数据方法
如果您希望公开带有字段列表的自定义标题,要进行序列化 - 自定义DTO对象,或Map<String, Object>
(丑陋丑陋)或自定义HandlerMethodReturnValueHandler
来帮助您。