应该从REST API返回哪个HTTP代码?

meo*_*173 4 rest http

我目前正在一个网站上工作,后端有Spring,前端有Angularjs,我们讨论了后端响应以处理前端的消息对话框,我有一个问题要问:

假设我有一个API:

GET : /getstatistics
Request params : fromTime,toTime ( in timestamp format)
Run Code Online (Sandbox Code Playgroud)

如果客户端使用无效的params(如字符串)发出请求,应该从服务器返回哪个响应代码?HTTP 400错误的请求和响应正文,消息"fromTime和toTime应该是时间戳格式"或HTTP 200具有相同的消息?

我看到一些谷歌的API,例如Oauth,他们为无效access_token的请求返回代码200但是,在我们的项目中,我认为它应该是HTTP 400,因为Javascript有成功和错误回调,它是否更好它只是弹出一个红色内部消息而不是HTTP 200代码的颜色对话框然后仍然需要检查消息的内容?

任何建议和意见表示赞赏.

谢谢!

Div*_*ani 9

您应该400为错误请求返回错误.看看这个参考.

由于被认为是客户端错误的东西(例如,格式错误的请求语法,无效的请求消息成帧或欺骗性请求路由),服务器不能或不会处理该请求.

请查看RFC7231#section-6

客户必须了解任何状态代码的类,如第一个数字所示

和,

4xx(客户端错误):请求包含错误的语法或无法满足

错误的语法可能就像你在问题中提到的那样(使用无效参数发出请求,比如字符串).

每当我设计RESTful API时,我都会将这两个引用放在手边,对您也有帮助:

  1. https://httpstatuses.com/
  2. http://www.restapitutorial.com/httpstatuscodes.html