我有一个要求,用户将发送他想要的字段作为响应,而不是整个JSON:
?fields=name,description
基本上我有员工JSON,它有许多字段。但他只想知道你的名字和长相。他也可以用其他字段来改变它。后,他可以选择其他领域和发送请求。
如何实现这一点?
提前感谢。
使用@RequestParam
注释访问查询参数
@GetMapping("/api/foos")
public String getFoos(@RequestParam String fields) {
// ...
}
变量fields
将包含完整的字符串,因此您必须用分隔符分隔它,例如使用String.split
。
然后构建所需的响应格式,如果它是一个平面结构,您可以使用Map<String,>,它将被反序列化为一个平面json对象。
Map<String,String> response = new HashMap<>();
response.put("fieldName","value");
https://mkyong.com/java/java-how-to-split-a-string/
显然,这是一种避免数据抓取过度或抓取不足的情况,也是GraphQL API开发的一个很好的例子。一旦使用该模式开发了GraphQL API,未来的更改影响就会减少。客户端可以获取所需的任何字段何时使用graphql
的链接