我正在尝试用我正在研究的"类似休息"的API来弄清楚在不同情况下返回的正确状态代码.
这个例子借鉴了另一个关于正文中语法类型问题的问题,但我的问题始终假设有效的语法.
假设我有一个端点允许以JSON格式进行POST'ing购买.它看起来像这样:
{
"account_number": 45645511,
"upc": "00490000486",
"price": 1.00,
"tax": 0.08
}
Run Code Online (Sandbox Code Playgroud)
什么是适当的状态代码,如果:
这些都是严格的业务层问题,阻止"处理"发生,但是,一个场景涉及GET中的某些内容将是404.
请注意,帐号不在URL中,因此404会误导?
Pet*_*ton 14
我们一次拿这些.这些代码中的每一个都是向客户端发出的信号,表明服务器正常运行,并且必须在请求中更改某些内容才能成功执行.
400(错误请求)状态代码指示服务器由于被认为是客户端错误(例如,格式错误的请求语法,无效的请求消息成帧或欺骗性请求路由)而不能或不会处理该请求.
400通常表示语法错误; 作为用户,我应该在再次尝试之前查看请求的结构.
服务器未找到与Request-URI匹配的任何内容.没有说明该病症是暂时的还是永久性的.如果服务器通过一些内部可配置的机制知道旧资源永久不可用且没有转发地址,则应该使用410(Gone)状态代码.当服务器不希望确切地说明请求被拒绝的原因,或者没有其他响应适用时,通常会使用此状态代码.
404是Web服务器无法匹配任何URL的URL路径时使用的标准代码.作为客户端,我应该在再次尝试之前查看请求的URL.
422(不可处理实体)状态代码表示服务器理解请求实体的内容类型(因此415(不支持的媒体类型)状态代码是不合适的),并且请求实体的语法是正确的(因此400(错误请求) )状态代码不合适)但无法处理包含的指令.例如,如果XML请求主体包含格式正确(即语法正确)但语义错误的XML指令,则可能发生此错误情况.
422通常用于内容违规.作为用户,我应该在再次尝试之前查看我的请求内容.
现在,在您的情况下,帐号是一个识别号码,但不包含在URL中.404会向您的用户发出URL错误的信号,而不是有效负载.换句话说,假设您的网址是:
http://www.myservice.net/endpoint
Run Code Online (Sandbox Code Playgroud)
404将向我指示/端点处不存在服务,而不是没有帐号.无论我提交什么内容,服务器都不会处理我的请求.我应该做的修复是在URL中查找错误,而不是数据有效负载.所以对我来说,422会指出我正确的方向,除非你开始在URL中包含帐号.
最终这些是设计偏好,只需确保您清楚地与用户沟通.
| 归档时间: |
|
| 查看次数: |
5357 次 |
| 最近记录: |