RESTful API POST 没有正文的调用请求
RESTful API POST call request without a body
我想在 API 中创建一个新调用,将 link 两个已创建的资源组合在一起。因此,我不需要在 post 正文中传递任何 json 实体,我只需要在 URL 中传递的资源 ID。这是错误的做法吗?所以基本上我现在的请求只是一个简单的路径 {cid}/projects/{projectID}/subcontractors/{subcontractorID}
在 post 调用方法中,我从路径中提取资源 ID,然后 link 它们。响应只有通过或失败 {"success":true}。这是错误的做法吗?有更好的方法吗?
如何设计 API 完全取决于您。从技术角度来看,带有空负载的 POST
请求完全没问题。
但是,假设您打算将 contractor 添加到 project,我认为它可以更好地用 payload 表示:
POST /projects/1/contractors HTTP/1.1
Host: api.example.org
Content-Type: application/json
{ "contractorId": 100 }
如果您需要管理 项目 中 承包商 的更多信息,则此方法特别有用。如果上述请求成功,响应将包含 201
状态代码以及标识新创建资源的 Location
header。
因为您正在链接已经存在的资源 - 项目和承包商。我不喜欢 POST 方法。
相反,我会使用 PATCH 方法(因为我只编辑现有资源的部分内容)
有效载荷或请求 URL 方法都是可以接受的。
请求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
回应
我想在 API 中创建一个新调用,将 link 两个已创建的资源组合在一起。因此,我不需要在 post 正文中传递任何 json 实体,我只需要在 URL 中传递的资源 ID。这是错误的做法吗?所以基本上我现在的请求只是一个简单的路径 {cid}/projects/{projectID}/subcontractors/{subcontractorID} 在 post 调用方法中,我从路径中提取资源 ID,然后 link 它们。响应只有通过或失败 {"success":true}。这是错误的做法吗?有更好的方法吗?
如何设计 API 完全取决于您。从技术角度来看,带有空负载的 POST
请求完全没问题。
但是,假设您打算将 contractor 添加到 project,我认为它可以更好地用 payload 表示:
POST /projects/1/contractors HTTP/1.1
Host: api.example.org
Content-Type: application/json
{ "contractorId": 100 }
如果您需要管理 项目 中 承包商 的更多信息,则此方法特别有用。如果上述请求成功,响应将包含 201
状态代码以及标识新创建资源的 Location
header。
因为您正在链接已经存在的资源 - 项目和承包商。我不喜欢 POST 方法。 相反,我会使用 PATCH 方法(因为我只编辑现有资源的部分内容) 有效载荷或请求 URL 方法都是可以接受的。
请求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
回应