我应该为重复输入返回什么http结果

时间:2018-04-03 12:47:42

标签: rest http

我有一个api,让用户创建一个person对象,并在mysql db中创建它,当前当mysql返回MySQLException if t.errorMessage.errorCode == 1062时,我返回用户400,消息说已经存在此id的人,应该我改回409?

1 个答案:

答案 0 :(得分:0)

首先,请记住以下内容(引自定义REST架构风格的Fielding博士论文的chapter 6):

  

资源不是存储对象。资源不是服务器用于处理存储对象的机制。资源是概念图[...]

抽象数据库问题,如果资源的状态存在冲突409状态代码似乎是最适合这种情况的代码。服务器还应该在响应有效负载中返回有关冲突的详细信息:

  

6.5.8. 409 Conflict

     

409(冲突)状态代码表示请求不能     由于与目标的当前状态发生冲突而完成     资源。此代码用于用户可能的情况     能够解决冲突并重新提交请求。服务器     应该生成一个包含足够用户信息的有效负载     认识到冲突的根源。 [...]