RESTful POST 响应

m1n*_*keh 4 rest httpresponse httprequest

我有一个非常简单的 RESTful 服务,它通过 POST 接收一些表单数据,其目的是简单地将文本正文(具有唯一的 id)保留在云存储(Amazon S3、Azure Blob 存储等)中作为文件...

所以,问题是..如果一切都很好,并且我向调用者返回 200 响应,那么我应该以正文形式向调用者返回什么?

任何事物?没有什么?

如果这是创建数据库记录..也许该新记录的 id 可能有用..但在这种情况下,我认为简单的 HttpRepsone 代码就足够了?

有人同意、不同意或有支持讨论的链接吗?

我应该补充一点,对该服务的请求几乎是......移交,然后去......他们实际上并不需要我建议发回的唯一ID......这更多的是为了“完整性”。

cas*_*lin 8

简短回答

在服务器上创建资源后,您应该返回201状态代码和Location标头,以允许客户端找到新创建的资源。

响应负载是可选的,它通常描述并链接到所创建的资源。

答案长一点

请参阅RFC 7231中的以下引用:

4.3.3. 邮政

[...]如果由于成功处理请求而在源服务器上创建了一个或多个资源POST,则源服务器应该发送一个201(已创建)响应,其中包含一个Location标头字段,该标头字段提供所创建的主要资源的标识符,并且引用新资源时描述请求状态的表示形式。[...]

同样来自RFC 7231

6.3.2. 201 已创建

(已创建)状态代码201表示请求已得到满足,并导致创建一个或多个新资源。Location请求创建的主要资源由响应中的标头字段标识,或者如果未Location收到任何字段,则由有效请求 URI 标识。

响应201有效负载通常描述并链接到所创建的资源。[...]

7.1.2. 地点

标头字段Location在某些响应中用于引用与响应相关的特定资源。关系类型由请求方法和状态码语义的组合来定义。

Location = URI-reference
Run Code Online (Sandbox Code Playgroud)

该字段值由单个 URI 引用组成。[...]对于201(已创建)响应,该Location值指的是请求创建的主要资源。[...]