尝试创建超出最大限制的资源时,POST API请求的适当http状态代码应该是什么

时间:2019-03-20 12:04:18

标签: rest api http

我在POST API下搜索了将近2-3个小时的正确响应代码,但没有得到正确答案,因此,我恳请有人在这里帮助我。

我们有一个POST API,最多可创建10次资源。 当我们第11次调用POST API时,我们将收到一条响应,并显示消息“用户超出了创建资源的限制”和正确的响应代码。 请提出正确的响应码。

3 个答案:

答案 0 :(得分:1)

根据您的问题提供的详细程度,我建议使用4xx范围内的状态代码,以及以对客户有意义的方式描述错误的响应有效负载。

您可以考虑使用403(禁止),表示服务器可以理解请求,但拒绝授权。但是,根据您要实现的目标,可能还有其他状态代码更适合您的情况:

  • 402(需要付款):如果超出了请求配额,但是在付款后可以执行更多请求,则可以考虑使用402状态代码(即使文档说它保留供将来使用,其原因短语非常清楚,并很好地定义了其用途。)

  • 429(太多请求):如果您对每小时/每天的请求数量施加限制,则429状态代码可能适合您的需求。但是,服务器使用此状态代码表示在短时间内收到了太多请求,也就是说,客户端正在节流。

如果这些状态代码似乎不匹配,只需进入400,它表示一个错误的请求。


状态码表示尝试理解并满足请求的结果。

但是您必须记住,状态代码有时不足以传达有关错误的足够信息,以提供帮助。因此,建议您返回描述错误的有效负载。 RFC 7807为此定义了一个标准。

如果您为此创建自己的状态代码(您可以做什么,但并不意味着您应该这样做),请注意,客户将对待无法识别的状态代码与该类的x00状态代码等效。来自RFC RFC 7231

  

例如,如果客户端收到无法识别的状态代码471,则客户端可以假定其请求有问题,并将响应视为已收到400 (错误请求)状态代码。响应消息通常将包含解释状态的表示。

答案 1 :(得分:0)

您应该尝试使用4xx状态。就个人而言,我将使用403,因为禁止用户创建对象。

  

HTTP 403禁止的客户端错误状态响应代码表示服务器理解了该请求但拒绝对其进行授权。此状态类似于401,但是在这种情况下,重新认证不会有任何区别。永久禁止访问并将访问与应用程序逻辑绑定在一起,例如对资源的权限不足。   source

然后,您可以向请求正文中添加一条消息,解释请求失败的原因。 Some more info about 403

此外,如果需要所有状态代码的概述,我想检查此页面:Status Codes

答案 2 :(得分:0)

我建议400,错误请求。

403更适合于授权问题,而并非如此。 提供明确的解释,说明为什么要返还400,而且还不错。

是的,这是一个更通用的解决方案,这正是使它更合适的原因。

HTTP状态代码具有非常清晰的用例,每个人都可以理解。建议不要“重用”另一个。