让你有一个这样的网址:
POST /departments
,这将创建一个新部门
,并且POST /employees
,这将创建一个新员工。
两个 url 都返回新创建资源的位置标头等。
假设一个员工可以属于多个部门。
您将如何构建相应的 URL,最重要的是您将使用 POST 或 PUT 来执行此操作?例如:要将比尔添加到图书部门,您会使用:
POST /departments/Books/employees/Bill
或者:
PUT /departments/Books
{
"employee" : "Bill"
}
前者在我看来在语义上更正确,因为无论如何在POST
正文中我有更多的数据来表征这种新关系。而且
GET /employee/Bill
返回一个与以下返回的主体不同的主体:
GET /departments/Books/employees/Bill
所以对我来说,添加关系就像创建一个新资源。但是,我不喜欢在
POST /departments/Books/employees/Bill
URL 中明确命名新资源的事实。