java - 任何知名的 java 库只返回 REST API 的请求字段
问题描述
为 Spring Boot 应用程序寻找一个知名的 Java 库,其中 GET api 返回一个非常大的资源列表。为了减少响应的大小,约定之一是仅在响应中请求字段。
例子,
GET /v1/users/
{
"data" :
{
[
{
"name" : "User1",
"phone" : "800-999-9999",
"city" : "XYZ1",
"country" : "PQR1"
},
{
"name" : "User2",
"phone" : "800-999-9999",
"city" : "XYZ2",
"country" : "PQR2"
}
]
}
}
对于较轻的响应版本,当字段作为查询参数传递时
GET /v1/users/?fields=name,city
{
"data" :
{
[
{
"name" : "User1",
"city" : "XYZ1"
},
{
"name" : "User2",
"city" : "XYZ2"
}
]
}
}
要了解更多“教狗休息”。提到了linkedIn、facebook、twilio等的一些做法。
我遇到了“ https://github.com/monitorjbl/json-view ”。但被球队击落。
有谁知道这个的开源许可项目?使用 java spring 微服务的组织如何实现这个特性?谢谢!
解决方案
这是 API 设计的难点之一。您需要在使其足够通用以支持多个用例而不添加很少需要的信息之间找到正确的权衡。一种可能性是创建另一个端点。但是,这可能会导致大量端点和糟糕的 API 设计。
我不完全了解您的用例,但您可以查看GraphQL而不是 REST 。在 GraphQL 中,客户端基本上告诉服务器它想要接收什么信息。
除此之外,stackoverflow 上已经有一些帖子可能会有所帮助:
推荐阅读
- nativescript - 图像资产和位图工厂插件之间的主要区别是什么
- c++ - 为什么我的 if 子句不起作用?如何修复变量类型?
- python - 如何在至少调用一次函数之前禁用键盘上的某个键?
- bash - 如何通过管道查找路径的基本名称
- javascript - 如何创建验证超集以扩展基本功能
- command-line - 是否可以通过 Linux 命令行发送 SMS 消息?
- sfx - 是否可以链接启动目录(SFX 的)以在提取到临时文件夹的脚本中使用?
- django - 如何在不同服务器上使用redis进行缓存
- c++ - 为什么成员函数调用“模棱两可”?
- neo4j - 奇怪的输入数据,整个缓冲区没有换行符 4194304,不支持atm