2012-12-11 24 views
1

我一直在阅读很多东西,并且我知道REST API会使用HTTP动词来映射资源。例如,当教程展示像Employee这样的示例时,这很容易理解。 PUT将成为新记录(如果它不存在)或更新;一个GET将提取所有员工的列表,并且GET api.example.com/employee/12将提取ID = 12的员工的记录。如何为过滤的数据创建REST api

但是,例如,如何映射更有用的查询,如“让我所有的员工薪水低于50,000美元,公司少于两年,婚姻状况如此单一“? 换句话说,我该如何参数化查询?它是正确的加样api.example.com/Employee?salary<50000&years<2&marital-status=single" ?

回答

1

参数的理论:如果您将参数添加到您的查询

,他们只是URL的一部分。 URL的形式不会告诉你任何有关您的API是否为RESTful的信息。查询字符串的API是宁静的,如果它服从这里描述的约束:http://en.wikipedia.org/wiki/Representational_state_transfer和(可选)遵循指导原则

所以只要你的查询参数不会做任何疯狂的事情就像随机改变一些状态资源,那么你的API仍然是RESTful的

做法:

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

你的情况:

你的查询字符串不能包含inequalitites,仅键+值对。你需要更多地表达它的意思:“max-salary = 50000 & max-years = 2 &”婚姻状态=单身“你也可以用不同的方式命名你的'索引'路线:api.example.com/employees(复数)