注册期间现有电子邮件的422或409状态代码

时间:2018-06-20 11:03:18

标签: rest api http

我正在构建RESTful API,遇到了一种情况。在用户注册期间,如果电子邮件已经存在,那么在422409之间,哪个HTTP响应代码有意义?

我浏览过类似的one,并且接受的答案来自2012年。答案仍然有效吗?例子会很有帮助。

2 个答案:

答案 0 :(得分:2)

一旦409422都适用于这种情况,您可能找不到这个问题的绝对答案(我会选择{{3} })。

对于任何一个,您必须确保将描述问题的有效负载发送回客户端。

  

409

     

409(冲突)状态码表示请求无法     由于与目标的当前状态冲突而完成     资源。此代码用于用户可能会     能够解决冲突并重新提交请求。服务器     应该生成一个有效载荷,该有效载荷应为用户提供足够的信息     识别冲突的根源。 [...]

  

6.5.8. 409 Conflict

     

422(不可处理实体)状态代码表示服务器     了解请求实体的内容类型(因此     415(不受支持的媒体类型)状态码不正确),并且     请求实体的语法正确(因此400(错误请求)     状态代码不正确),但无法处理其中的内容     说明。例如对于如果XML可能会出现此错误情况     请求正文包含格式正确(即语法正确)的内容,但     语义错误的XML指令。

答案 1 :(得分:0)

我认为class Product < ActiveRecord::Base scope :closest_by_price, ->(price) { quoted_price = connection.quote(price, columns_hash["price"]) order("abs(products.price - #{quoted_price})") } end Product.closest_by_price(50.0) 在此示例中最合适,因为请求与已经存在的注册冲突。

例如,如果服务不能接受基于.de域的电子邮件地址; 409似乎更可取。此示例也将不符合422的条件,因为.de域是有效的语法。