繁体   English   中英

如何为过滤的数据创建REST API

[英]how to create a REST api for filtered data

我已经阅读了很多书,并且了解到REST API会使用HTTP动词来映射资源。 例如,当一个教程显示诸如Employee之类的示例时,这很容易理解。 PUT将是新记录(如果不存在)或更新; GET将提取所有员工的列表,而GET api.example.com/employee/12将提取ID = 12的Employee的记录。

但是,例如,我如何映射一个更有用的查询,例如“让我获得薪水低于50.000,在公司工作不到2年且婚姻状况为单身的所有雇员”? 换句话说,如何设置查询参数? 添加诸如api.example.com/Employee?salary<50000&years<2&marital-status=single" ?类的参数是否正确api.example.com/Employee?salary<50000&years<2&marital-status=single" ?

理论:

如果将参数添加到查询中,则它们只是URL的一部分。 URL的形式不告诉您任何有关您的API是否为RESTful的信息。 如果您的API遵循以下描述的约束,则带有查询字符串的API会很安静: http : //en.wikipedia.org/wiki/Representational_state_transfer并且(可选)遵循指导原则

因此,只要您的查询参数没有做任何疯狂的事情(例如随机更改某些资源的状态),那么您的API仍然是RESTful的

实践:

任何明智的REST API都需要“索引”路由的查询参数。 实际上,LinkedIn的REST API具有查询参数,这些参数仅从某人的个人资料中选择字段。 在这种情况下,URL看起来与您的URL完全不同,但是仍然遵守REST的原则。

您的情况:

您的查询字符串不能包含不等式,只能包含键值对。 您需要像“?max-salary = 50000&max-years = 2&marital-status = single”这样表达。也可以用不同的方式命名“索引”路线:api.example.com/employees(复数)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM