我想在我的API中创建一个新的调用,该调用将两个已经创建的资源链接在一起。因此,我不需要在帖子主体中传递任何json实体,我只需要在URL中传递的资源ID。这是错误的做法吗?所以基本上我现在的要求只是一个简单的路径{cid} / projects / {projectID} / subcontractors / {subcontractorID} 然后在post call方法中,从路径中提取资源ID并将它们链接起来。响应仅为通过或失败{“ success”:true}。这是错误的做法吗?有更好的方法吗?
答案 0 :(得分:1)
如何设计API完全取决于您。从技术角度来看,具有有效载荷为空的POST
请求是完全可以的。
但是,假设您打算将承包商添加到项目,我认为可以用有效负载更好地表达它:
POST /projects/1/contractors HTTP/1.1
Host: api.example.org
Content-Type: application/json
{ "contractorId": 100 }
如果您需要在该项目中管理有关该承包商的更多信息,该方法特别有用。如果上述请求成功,则响应将包含201
状态代码以及标识新创建资源的Location
标头。
答案 1 :(得分:1)
由于您正在链接现有资源-项目和承包商。我不喜欢POST方法。 相反,我将使用PATCH方法(因为我仅编辑现有资源的部分内容) 有效负载或请求URL方法都是可以接受的。
请求网址:
PATCH /projects/3/contractors/23 HTTP/1.1
HOST example.com/api
有效载荷
PATCH /projects/3/contractors HTTP/1.1
HOST example.com/api
Content-Type: application/json
{ "contractor_id": 23 }
成功的响应由状态代码200
指示,其中可能包含有效负载,或者
204
回复