Tre*_*ner 33 rest http http-status-codes
场景:
甲POST请求被发送到处理,这将导致数据检索来自外部数据源的命令.
有三种可能的结果:
对1的明显响应是200: OK或201: Created(从此请求创建实体).
什么状态代码适合2和3?
我考虑的状态代码:
503: Service Unavailable 当数据源关闭时500: Internal Server Error 当数据源关闭时502: Bad Gateway 什么时候"没有数据可用"404: Not Found 什么时候"没有数据可用"403: Forbidden 什么时候"没有数据可用"412: Precondition Failed 什么时候"没有数据可用"Chu*_*den 26
3)我同意503的意见
2)坦率地说,我认为在案例2中使用204可以做出很好的论证.你可以在标题中包含metainfo来明确指出"出错了".这实际上取决于您认为这种情况在API级别为"错误"的程度.
如果API本身按预期运行,并且请求由经过身份验证和授权的用户提供给有效端点,并且不会导致服务器出现故障,那么400或500系列错误中很少会出现错误.
例如,404通常意味着您调用的URI不存在,如果它确实存在,那么使用该代码至少会产生误导恕我直言
Run Code Online (Sandbox Code Playgroud)**10.2.5 204 No Content**服务器已完成请求但不需要返回实体主体,并且可能希望返回更新的元信息.响应可以包括实体标题形式的新的或更新的元信息,如果存在,应该与所请求的变体相关联.
如果客户端是用户代理,它不应该从导致请求发送的文档视图中更改它的文档视图.这种反应主要是为了允许操作发生而不引起改变到用户代理的活动文档视图的输入,尽管任何新的或更新的元信息应在用户代理的活动视图当前应用于该文档.
204响应绝不能包含消息体,因此总是在头字段之后的第一个空行终止.
Dan*_*675 21
2)回顾这一点,我同意它可能应该是204 No Content或者可能是200,其中一个正文表示根据返回的结构没有记录或资源.当资源URI不存在或者在宁静服务的情况下未找到URI中的资源时,通常使用404.
3)503服务不可用
由于服务器的临时过载或维护,服务器当前无法处理请求.这意味着这是一个暂时的条件,经过一段时间的延迟后会得到缓解.如果已知,则可以在Retry-After报头中指示延迟的长度.如果没有给出Retry-After,客户端应该像处理500响应一样处理响应.
Note: The existence of the 503 status code does not imply that a
server must use it when becoming overloaded. Some servers may wish
to simply refuse the connection.
Run Code Online (Sandbox Code Playgroud)