restful api post 创建资源失败 返回什么状态码?

创建资源后台校验格式错误应该返回什么状态码?

阅读 19.2k
8 个回答

看情况。
按照你的描述,下面这几个比较合适。

HTTP 400 - 请求错误:bad_request
HTTP 406 错误 – 无法接受 (Not acceptable)
422 Unprocessable Entity - 请求格式正确

附:对照表

Response Class HTTP Status Code Symbol
消息 100 :continue
101 :switching_protocols
102 :processing
成功 200 :ok
201 :created
202 :accepted
203 :non_authoritative_information
204 :no_content
205 :reset_content
206 :partial_content
207 :multi_status
208 :already_reported
226 :im_used
重定向 300 :multiple_choices
301 :moved_permanently
302 :found
303 :see_other
304 :not_modified
305 :use_proxy
306 :reserved
307 :temporary_redirect
308 :permanent_redirect
客户端错误 400 :bad_request
401 :unauthorized
402 :payment_required
403 :forbidden
404 :not_found
405 :method_not_allowed
406 :not_acceptable
407 :proxy_authentication_required
408 :request_timeout
409 :conflict
410 :gone
411 :length_required
412 :precondition_failed
413 :request_entity_too_large
414 :request_uri_too_long
415 :unsupported_media_type
416 :requested_range_not_satisfiable
417 :expectation_failed
422 :unprocessable_entity
423 :locked
424 :failed_dependency
426 :upgrade_required
428 :precondition_required
429 :too_many_requests
431 :request_header_fields_too_large
服务端错误 500 :internal_server_error
501 :not_implemented
502 :bad_gateway
503 :service_unavailable
504 :gateway_timeout
505 :http_version_not_supported
506 :variant_also_negotiates
507 :insufficient_storage
508 :loop_detected
510 :not_extended
511 :network_authentication_required

不太理解你的

创建资源后台校验格式错误

是什么意思

如果是由于提交的数据问题,做「业务相关的检查」,返回两类错误:

  • 400 (Bad Request) 如:密码不符合要求,昵称不允许为空,等等;
  • 409 (Conflict) 如:建立新用户时,该用户名/手机号已经存在;

404 请求资源不存在
409 冲突,但是用户可以自行解决

客户端传的参数格式不正确,建议用 400 Bad Request

楼上的好复杂啊,我的http状态就是202,然后返回的body就是下面的:

{"code":-1,"msg":"创建资源后台校验格式错误","data":""}

当然我这也许不是标准的API返回,只是对于异步的,http的状态码应该作用不是很大吧

不要太执着,利用协议状态码返回对应的错误,调用方太麻烦了,建议全部返回200

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进