Python 当Api引发ValueError时,http状态代码是什么?
我在API中引发值错误,因为特定函数的输入参数无效,如下所示Python 当Api引发ValueError时,http状态代码是什么?,python,http,http-status-codes,valueerror,Python,Http,Http Status Codes,Valueerror,我在API中引发值错误,因为特定函数的输入参数无效,如下所示 密码不匹配 数据库中不存在用户或值为负值 客户端根据API规范提供了有效的参数,所以我认为客户端错误不是这种情况(400系列代码) 因此,我是否必须将状态代码返回为200,因为该请求已被完全处理,或者应该有一个http状态代码。您应该发送另一个状态代码 一个很好的例子是重定向3xx,它提供了另一种状态而不是200。通过POST请求提交表单后,建议服务器进行307临时重定向。然而,请求被完全处理,甚至成功了 在您的情况下,发生了一些事情
因此,我是否必须将状态代码返回为200,因为该请求已被完全处理,或者应该有一个http状态代码。您应该发送另一个状态代码 一个很好的例子是重定向3xx,它提供了另一种状态而不是200。通过POST请求提交表单后,建议服务器进行
307临时重定向
。然而,请求被完全处理,甚至成功了
在您的情况下,发生了一些事情(引发了异常)。通过发送适当的状态,让客户机知道这一点。我建议您使用
403禁止
或401未经授权
由于存在各种无效
类型,您应该针对每种不同的情况使用最合适的HTTP状态码,具体视情况而定
由于密码不匹配
,我认为403禁止
是最好的选择
由于数据库中不存在用户,
204无内容是最好的
对于值为负
,这取决于值为负的原因。您可能应该从4xx范围返回某个值,以指示请求存在阻止执行请求的错误。400(错误请求)是用于输入验证失败的。对于身份验证或密码问题,401(未经授权)是最合适的。如果用户已通过身份验证,但不允许执行特定操作,请使用403(禁止)。如果问题在于不存在的对象(如用户),则可以返回404(未找到)
2xx响应代码用于指示已成功接收和处理请求,3xx用于告知用户未发生任何事情,但存在可执行的替代请求(例如,301和303重定向,或未修改304)。5xx用于在服务器端发出各种问题的信号,这些问题会阻止请求的执行
对常见http响应代码及其含义有很好的概述。如果特定客户(客户端)没有特定记录(新用户),那么它将给出值错误,但在我看来,401 Unauthorized
适合。但是不止一个状态码是有效的,并且没有确切和明确的答案。204没有内容
如果后面有一些内容,这不是一个好主意。根据RFC2616:204响应不能包含消息体,因此总是由头字段后的第一个空行终止代码>正确,只有当整个资源不可用时,204
才是选择。