1

我读了很多书,我知道 REST API 使用 HTTP 动词映射资源。例如,当教程显示像 Employee 这样的示例时,这很容易理解。PUT 将是一条新记录(如果它不存在)或更新;GET 将提取包含所有员工的列表,GETapi.example.com/employee/12将提取 ID = 12 的员工的记录。

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

4

1 回答 1

1

理论:

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

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

实践:

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

你的情况:

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

于 2012-12-11T15:02:33.957 回答