我需要设计一个API端点,它接受GET请求的复合标识符列表
假设标识符是这两个属性的组合:
并且假设客户想要查询以下项目:
设计此标准的标准方法是什么
我一直在考虑的一些选择
单个查询字符串参数,其中type:id
应按明确顺序
/endpoint?typeid=10:99&typeid=10:98&typeid=11:89&typeid=12:79
单个查询字符串参数,为复合
的每个部分显式调出args/endpoint?q=type:10+id:99&q=type:10+id:98&q=type:11+id:89&q=type:12+id:79
与2相同,但以逗号分隔
/endpoint?q=type:10+id:99,type:10+id:98,type:11+id:89,type:12+id:79
答案 0 :(得分:1)
使用查询参数是请求对实体进行服务器端过滤的“标准”方式。
参数格式真的取决于你,基本上,没有一个选项是错误的。由于REST是关于统一接口的,因此您可以推断出简单性和非模糊性是可取的。因此,你应该更喜欢更简单明了的东西。
在您的选项中,我会使用数字1,但这是基于参数名称的个人偏好(它带有更多“语义”)。
您当然知道,当您需要执行非常复杂的过滤时,查询参数并不总是很好。另一个方法是设计一个“filterRequest”资源并使用POST与它进行交互。
操作意义是:
如果您计划添加更多过滤选项(这样可以增强可扩展性和重用性),也许这个选择是值得的。相反,你会发现自己正在努力克服往往变得难以理解的查询。