过账到单个项目与收款(REST API)

过账到单个项目与收款(REST API),rest,post,Rest,Post,假设我有一个RESTAPI,其端点/API/users/。将用户发布到该端点将创建一个新用户并将其添加到现有集合中,为该用户提供一个唯一的ID,以便您可以使用它。如果我创建了一个GET/api/users/1,这将返回我创建的id为1的用户。我的问题是,将邮件发送到单个项目应该是什么情况。如果要过帐到集合,如果资源已创建,则应返回201 Created;如果资源已存在,则应返回409 Conflict。发布到单个资源的最佳实践是什么?它是否应该返回一个405方法Not Allowed,就像您不应

假设我有一个RESTAPI,其端点
/API/users/
。将用户发布到该端点将创建一个新用户并将其添加到现有集合中,为该用户提供一个唯一的ID,以便您可以使用它。如果我创建了一个
GET/api/users/1
,这将返回我创建的id为1的用户。我的问题是,将邮件发送到单个项目应该是什么情况。如果要过帐到集合,如果资源已创建,则应返回
201 Created
;如果资源已存在,则应返回
409 Conflict
。发布到单个资源的最佳实践是什么?它是否应该返回一个
405方法Not Allowed
,就像您不应该被允许发布到单个资源一样,还是应该返回一个
404 Not Found

如果在收到请求时,资源(无论它代表的概念如何)不支持特定方法(POST),则正确的返回响应是
405

405(不允许方法)状态代码表示在请求行中接收的方法为源服务器所知,但目标资源不支持。源服务器必须在405响应中生成一个Allow header字段,该响应包含目标资源当前支持的方法的列表

HTTP规范包括一个方法()和响应头(),使客户机能够询问服务器以发现允许哪些方法,虽然我想这会改变


注意:在某些用例中,向单一资源发送消息是一个合理的选择(考虑如何在以HTML为超媒体格式的api中定义协议)。在这种情况下,您应该选择适当的成功代码(200、201、204…),当然,假设一切顺利。

如果在收到请求的那一刻,资源(不管它代表什么概念)不支持特定的方法(POST),则返回的正确响应是
405

405(不允许方法)状态代码表示在请求行中接收的方法为源服务器所知,但目标资源不支持。源服务器必须在405响应中生成一个Allow header字段,该响应包含目标资源当前支持的方法的列表

HTTP规范包括一个方法()和响应头(),使客户机能够询问服务器以发现允许哪些方法,虽然我想这会改变


注意:在某些用例中,向单一资源发送消息是一个合理的选择(考虑如何在以HTML为超媒体格式的api中定义协议)。在这种情况下,您应该选择适当的成功代码(200、201、204…),当然前提是一切顺利。

如果有人试图发布到某个特定项目,而该项目应该有call PUT进行更新。在我看来404应该是正确的返回状态代码,它告诉客户端他们正在寻找的资源不可用,这意味着他们正在点击的URL不正确


当客户端使用错误的方法类型访问正确的URL时,应调用405不允许的方法。假设您有带PUT的/api/users/{id},但客户机正在使用POST。

如果有人试图将POST发送到一个特定的项目,它应该在其中调用PUT进行更新。在我看来404应该是正确的返回状态代码,它告诉客户端他们正在寻找的资源不可用,这意味着他们正在点击的URL不正确


当客户端使用错误的方法类型访问正确的URL时,应调用405不允许的方法。假设您的/api/users/{id}带有PUT,但客户端正在使用POST。

也许我的问题措辞含糊不清,但我的意思是问是否应该支持POST发布到特定项目(例如
/api/users/12345
),并让它返回
404
/
409
。这是最佳实践还是我应该完全不支持它,并返回一个不允许的
405方法
?如果/api/users/12345不支持POST,那么最佳实践是返回405。也许我的问题措辞含糊不清,但我的意思是问,是否应该支持将POST发布到特定项目(例如
/api/users/12345
)并让它返回
404
/
409
。这是最佳实践还是我应该完全不支持它,并返回一个不允许的
405方法
?如果/api/users/12345不支持POST,那么最佳实践是返回405。如果资源还不存在怎么办?他们不应该被允许对该资源调用PUT进行更新。嗯,PUT是更新调用的约定,如果资源不存在,PUT可以返回204 No content如果资源还不存在怎么办?他们不应该被允许调用该资源上的PUT进行更新。嗯,PUT是更新调用的约定,如果资源不在那里,PUT可能不会返回任何内容