【发布时间】:2019-04-14 16:51:05
【问题描述】:
我想为网站抓取服务设计一个 RESTful API。用户将任务委托给服务。每个任务都是一个必须转义的网站。用户可以检查任务的状态。完成任务后,用户可以获取任务结果。 状态可以是“Waiting”、“In progress”或“Done”,完成后用户可以获得数据。
我现在拥有的是:
POST /tasks- 发布要抓取的网址GET /tasks- 返回任务列表
我还需要两个端点:一个用于获取任务状态,另一个用于从网站获取抓取的数据。 GET 应该是什么样子?
-
GET /tasks/{id}- 返回状态?还是返回数据?
或许
GET /tasks/{id}/statusGET /tasks/{id}/data
但是那会返回/tasks/{id}/ 呢?
如果我还想以 html 的形式呈现已转换的数据怎么办? 我应该使用
-
GET /tasks/{id}/data或GET /tasks/{id}/result
【问题讨论】:
-
这很主观,只要有意义,你就可以了。
/tasks/status/{id}和/tasks/results/{id}怎么样? -
也许
GET /tasks/{id}应该根据任务是否完成返回不同的状态?例如。 204 No Content until there's data, then 200 OK with the data?或者做这样的事情:farazdagi.com/2014/rest-and-long-running-jobs,用 202 Accepted 回复POST,提供一个 Location 来轮询那里的工作状态,并最终返回 303 See Other 和数据的位置。跨度> -
@FelDev 为什么
/tasks/status/{id}而不是/tasks/{id}/status哪种方式更好? -
状态是任务的属性,
/tasks/{id}/status会更有意义,如果这是你要去的方向。
标签: rest restful-url