在为特定搜索字词获取数据时,RESTful API地址是什么样的?

时间:2016-08-06 07:56:38

标签: api rest laravel

设计要将搜索字词传递给的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 }
  });

1 个答案:

答案 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