【问题标题】:Http status code for bad params in post request发布请求中错误参数的 Http 状态码
【发布时间】:2013-07-14 15:25:56
【问题描述】:
我有一个服务器,客户端可以在其中将自己注册为设备(如移动设备)。对于注册,设备必须与已经在服务器上注册的另一个资源(比如用户)相关联。为此,客户端向服务器发送一个 Http Post 请求,其中包含两个参数,它自己的 ID 和关联的资源 ID。
当客户端要求服务器做一些程序并且没有找到参数中指示的资源之一时,我需要选择一个Http状态码来返回。
我suggested 404,但是我的教授说404是用了URI关联的资源没有找到,不是当你提交一个格式错误的参数错误的请求时。
什么是最合适的http状态,为什么会选择?
【问题讨论】:
标签:
client-server
http-status
【解决方案1】:
在我看来,它适合:
400 - 错误请求
由于语法错误,服务器无法理解请求。客户端不应该在没有修改的情况下重复请求。
或
403 - 禁止
服务器理解请求,但拒绝执行。授权将无济于事,并且不应重复请求。如果请求方法不是 HEAD 并且服务器希望公开请求未完成的原因,它应该在实体中描述拒绝的原因。如果服务器不希望向客户端提供此信息,则可以使用状态代码 404(未找到)来代替。
参考:fc2616
【解决方案2】:
我会使用 403 'Forbidden' - 意思是,您被禁止访问带有您发送的请求的页面