Rest 失败的电子邮件发送的http状态代码

Rest 失败的电子邮件发送的http状态代码,rest,http-status-codes,Rest,Http Status Codes,考虑一个创建用户的API调用。成功后,将创建用户并发送确认电子邮件。响应状态代码为201 如果未创建用户,则响应状态代码为422 如果创建了用户但发送确认电子邮件失败,响应状态代码应该是什么 问题的核心在于混合使用RESTful资源创建和RPC风格的操作。在RESTful世界中,用户的创建将是原子操作,并返回201或422(或您选择的任何错误代码)。然后,确认电子邮件的发送可能是另一个发送到/api/user/confirmationmailtask的帖子,该帖子随后会派生出电子邮件过程。当你把

考虑一个创建用户的API调用。成功后,将创建用户并发送确认电子邮件。响应状态代码为201

如果未创建用户,则响应状态代码为422


如果创建了用户但发送确认电子邮件失败,响应状态代码应该是什么

问题的核心在于混合使用RESTful资源创建和RPC风格的操作。在RESTful世界中,用户的创建将是原子操作,并返回201或422(或您选择的任何错误代码)。然后,确认电子邮件的发送可能是另一个发送到/api/user/confirmationmailtask的帖子,该帖子随后会派生出电子邮件过程。当你把两者结合起来,你会发现模棱两可的地方


(移动评论以回答子孙后代的问题)

为什么这不是422?这似乎是有道理的,因为整个行动无法完成。您的另一个选择是将完成栏移回仅创建用户,并将确认电子邮件保留为可选操作。在这种情况下,发送一个200,其中包含一些关于是否发送电子邮件的附加信息。问题的核心在于混合使用RESTful资源创建和RPC样式的操作。在RESTful世界中,用户的创建将是原子操作,并返回201或422(或您选择的任何错误代码)。然后,确认电子邮件的发送可能是另一个发送到/api/user/confirmationmailtask的帖子,该帖子随后会派生出电子邮件过程。当你把两者结合起来,你会发现ambiguity@edgar太明显了。谢谢。但是如果确认邮件的发送是另一个发送到/api/user/confirmationmailtask的邮件,然后又脱离了邮件处理过程,那么它是否仍然应该向发出发帖请求的人返回一些东西呢?那东西不也应该返回https状态码吗?该代码应该是什么?原始的create user POST应该返回body负载中新创建的用户(或带有链接的http端点)的id(假设201成功)。或者,它还可以返回与用户创建相关的任何作业的id(例如,发送电子邮件、供应数据库等)。然后,客户机可以查询每个作业id的状态,或者查询主用户端点,可能还可以获取每个作业的作业列表和关联状态。设计有很多选择。