设计要将搜索字词传递给的RESTful API的最简洁方法是什么?
例如,我有一个名为“Jobs”的端点,作业可以是入站或出站作业。我想列出所有出境工作。
通常,我会将id传递给网址,例如/api/jobs/12
以获取特定记录。
显示特定类型的所有作业的URL是什么样的?
它会是/api/jobs/?direction=inbound
吗?这是正常的RESTful地址的样子吗?
我正在使用Angular $resource
而不确定如何设置它。
以前我使用这样的东西给我一个特定的实体:
return $resource(settings.apiUrl + 'jobs/:id', {id: '@id'}, {
'update' : { method: 'PUT' },
'query': {method: 'GET', isArray: false }
});
答案 0 :(得分:3)
首先,在设计API结构时,RESTful原则不应该是最终的结果。相反,专注于让其他开发人员轻松使用,并且不会在RESTfulness中过多地被束缚。满足所有REST原则非常困难,大多数API都没有。
也就是说,如果您的作业对象具有direction
属性,则此URL非常好(以及我个人首选的方法),并且许多API都是这样做的:
GET /api/jobs?direction=inbound
如果您需要根据作业对象的属性以外的其他内容返回作业,例如取消作业,这也很常见:
GET /api/jobs/cancelled
虽然在这种情况下,我更愿意在作业对象中添加status
属性,而是使用:
GET /api/jobs?status=cancelled