我已经阅读了很多内容,并且我理解REST API使用HTTP谓词映射资源。例如,当教程显示像Employee这样的示例时,这很容易理解。
PUT将是新记录(如果它不存在)或更新; GET将提取所有员工的列表,GET api.example.com/employee/12
将提取ID = 12的员工的记录。
但是,例如,我如何绘制更有用的查询,例如"让我所有员工的薪水低于50.000,公司少于2年,婚姻状况为单身" ?
换句话说,我如何参数化查询?添加api.example.com/Employee?salary<50000&years<2&marital-status=single" ?
答案 0 :(得分:1)
理论:
如果您向查询添加参数,它们只是URL的一部分。 URL的形式不会告诉您有关API是否为REST的任何信息。如果符合此处描述的约束,则查询字符串的API是宁静的:http://en.wikipedia.org/wiki/Representational_state_transfer和(可选)遵循指导原则
因此,只要您的查询参数不做任何疯狂的事情,比如随机更改某些资源的状态,那么您的API仍然是RESTful
练习:
任何合理的REST API都需要“索引”路由的查询参数。在实践中,LinkedIn的REST API具有只从某人的个人资料中选择字段的查询参数。在这种情况下,URL看起来与您的完全不同,但仍遵循REST的原则。
您的情况:
您的查询字符串不能包含inequalitites,只能包含键+值对。你需要更多地表达它吗?max-salary = 50000&amp; max-years = 2&amp; marital-status = single“。你也可以用不同的方式命名你的'index'路线:api.example.com/employees(复数)