我有两个模型,员工和任务。 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
我没有得到如何模拟这种行为。
答案 0 :(得分:3)
取决于查询。如果您想明确关系,您可以(并且应该,IMO)具有以下端点:
GET /employees/:empid/tasks
DELETE /employees/:empid/tasks/:taskid
但是,如果您需要能够在不考虑员工的情况下查询所有任务,那么作为API使用者,我希望使用与员工任务端点相同的方法,即
GET /tasks
DELETE /tasks/:taskid
您可以编写一些授权逻辑来确定消费者是否具有在“全局”级别删除任务的适当权限,而无需指定员工。