Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 当资源等待电子邮件确认/激活时,202是否合适?_Rest_Http Status Codes_Http Response Codes - Fatal编程技术网

Rest 当资源等待电子邮件确认/激活时,202是否合适?

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

对于我正在开发的RESTAPI,客户可以注册一家公司,随后需要通过电子邮件进行确认/激活。收到以下示例请求后,将发送一封电子邮件,其中包含激活链接,以激活帐户

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。谢谢