RESTful API设计:建模关系

时间:2016-09-26 06:54:59

标签: rest api

我有两个模型,员工和任务。 empid和taskid是两个模型的主键 我想设计一个RESTful API来模拟这种关系。

我想到了以下设计:

hostname/task GET : get all tasks
hostname/task POST : post a tasks
hostname/task/:taskid GET : get a certain task
hostname/task/:taskid DELETE :  delete a certain task
hostname/task/:taskid PATCH :  update a certain task

但我的问题是每个任务都绑定到一个员工ID,我想要表示它。

我应该这样做

hostname/task/:empid GET : all tasks for a certain ID
hostname/task/:empid/taskid DELETE/PATCH/GET : delete/update or retrieve for a certain employees task

我没有得到如何模拟这种行为。

1 个答案:

答案 0 :(得分:3)

取决于查询。如果您想明确关系,您可以(并且应该,IMO)具有以下端点:

GET    /employees/:empid/tasks
DELETE /employees/:empid/tasks/:taskid

但是,如果您需要能够在不考虑员工的情况下查询所有任务,那么作为API使用者,我希望使用与员工任务端点相同的方法,即

GET    /tasks
DELETE /tasks/:taskid

您可以编写一些授权逻辑来确定消费者是否具有在“全局”级别删除任务的适当权限,而无需指定员工。