Rest 当资源等待电子邮件确认/激活时,202是否合适?
对于我正在开发的RESTAPI,客户可以注册一家公司,随后需要通过电子邮件进行确认/激活。收到以下示例请求后,将发送一封电子邮件,其中包含激活链接,以激活帐户Rest 当资源等待电子邮件确认/激活时,202是否合适?,rest,http-status-codes,http-response-codes,Rest,Http Status Codes,Http Response Codes,对于我正在开发的RESTAPI,客户可以注册一家公司,随后需要通过电子邮件进行确认/激活。收到以下示例请求后,将发送一封电子邮件,其中包含激活链接,以激活帐户 POST /companies HTTP/1.1 <company> <name>CoolCompany</name> <email>coolcompany@example.com</email> </company> POST/companys HTTP
POST /companies HTTP/1.1
<company>
<name>CoolCompany</name>
<email>coolcompany@example.com</email>
</company>
POST/companys HTTP/1.1
酷公司
coolcompany@example.com
如果上述请求成功(有效数据、电子邮件成功发送),公司资源将保存在数据库中,但只有在收到确认后才能在/companys/
(提供适当的授权标题)处使用
在这种情况下,是什么
HTTP/1.1 202 Accepted
// Perhaps optionally with a Location header,
// of where the resource will be available, as well?
Location: /companies/<id>
HTTP/1.1 202接受
//也许可以选择使用位置标头,
//资源将在何处可用?
地点:/公司/
适当的回应?或者会
HTTP/1.1 201 Created
Location: /companies/<id>
HTTP/1.1 201已创建
地点:/公司/
是更合适的回答吗?我的想法是:
201-是指在请求结束时完成所有内容/处理(填充数据库、创建文件等),因此当客户机(立即事件)获得资源时,他将收到完整的资源
202-当收到请求并成功开始处理时,但根据流程的某些限制,未处理所有与请求相关的活动
就你而言:
如果同步发送电子邮件并且在发送电子邮件之前不返回响应,那么我想201(已创建)就可以了
例如,如果您将电子邮件发送任务设置为队列,并立即返回到客户端,并且电子邮件可能会晚一点发送(或者,例如,在发送电子邮件之前,操作员对新客户端进行了一些手动处理),则202更好。REST是一种基于实体的概念。如果我得到一个201 Created响应,这将直观地表明资源已经创建并且可用,而不是这种情况。资源在确认后第一次可用,因此我建议使用202 Accepted标头
此外,您无法确定用户是否在请求时收到了电子邮件。我喜欢在这样的情况下(短信、电子邮件等)使用202,因为它告诉API消费者这是一个有效的请求,但在完成之前可能需要一些时间。是的,你帮助我说服了202。谢谢