Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当Api引发ValueError时,http状态代码是什么?_Python_Http_Http Status Codes_Valueerror - Fatal编程技术网

Python 当Api引发ValueError时,http状态代码是什么?

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临时重定向。然而,请求被完全处理,甚至成功了 在您的情况下,发生了一些事情

我在API中引发值错误,因为特定函数的输入参数无效,如下所示

  • 密码不匹配
  • 数据库中不存在用户或值为负值
  • 客户端根据API规范提供了有效的参数,所以我认为客户端错误不是这种情况(400系列代码)


    因此,我是否必须将状态代码返回为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
    才是选择。