如何在Python/Flask中故意导致400错误请求?
我的REST API的使用者说,有时我返回一个如何在Python/Flask中故意导致400错误请求?,python,rest,nginx,postman,http-status-code-400,Python,Rest,Nginx,Postman,Http Status Code 400,我的REST API的使用者说,有时我返回一个400错误请求-客户端发送的请求在语法上不正确。错误 我的应用程序(Python/Flask)日志似乎没有捕捉到这一点,我的Web服务器/Nginx日志也没有 编辑:出于调试目的,我想尝试在Flask中引起400个错误请求。我该怎么做 根据James的建议,我添加了类似于以下内容的内容: @app.route('/badrequest400') def bad_request(): return abort(400) 当我调用此函数时,fl
400错误请求
-客户端发送的请求在语法上不正确。
错误
我的应用程序(Python/Flask)日志似乎没有捕捉到这一点,我的Web服务器/Nginx日志也没有
编辑:出于调试目的,我想尝试在Flask中引起400个错误请求。我该怎么做
根据James的建议,我添加了类似于以下内容的内容:
@app.route('/badrequest400')
def bad_request():
return abort(400)
当我调用此函数时,flask返回以下HTML,它不使用“客户端发送的请求在语法上不正确”行:
400错误请求
错误的请求
浏览器(或代理)发送了此服务器无法理解的请求
(我不知道为什么它没有包含
标记
在我看来,400错误消息有不同的变体。例如,如果我将cookie的长度设置为50000(使用带邮递员的拦截器),我将从Flask获得以下错误:
<html>
<head>
<title>Bad Request</title>
</head>
<body>
<h1>
<p>Bad Request</p>
</h1>
Error parsing headers: 'limit request headers fields size'
</body>
</html>
错误的请求
错误的请求
分析标头时出错:“限制请求标头字段大小”
有没有办法让Flask通过400个错误的不同变体?您可以使用
abort
通过状态代码引发HTTP错误
from flask import abort
@app.route('/badrequest400')
def bad_request():
abort(400)
您可以将状态代码作为返回的第二个参数返回,请参见下面的示例
@app.route('/my400')
def my400():
code = 400
msg = 'my message'
return msg, code
您还可以对自定义消息错误使用
abort
:
from flask import abort
abort(400, 'My custom message')
请参见另外,您可以使用jsonify
from flask import jsonify
class SomeView(MethodView):
def post(self, *args, **kwargs):
if "csv_file" not in request.files:
return jsonify({'errors': 'No csv_file key in request.files.'}), 400
嗨,詹姆斯,谢谢你的想法。但是,当我这样做时,Flask默认情况下会在400个错误请求下返回以下描述:
浏览器(或代理)发送了一个此服务器无法理解的请求。
。看起来有不同类型的400条错误消息——例如,如果我创建了一个包含50000个字符的add cookie,它将以400个字符失败,但描述中说这是一个无效的头。您知道如何触发“语法错误”吗400版本?嘿,詹姆斯,你对我的评论和更新的问题有什么想法吗?希望我也能返回带有状态代码的自定义消息。还值得注意的是,状态模块包含标准HTTP状态。来自flask\u api导入状态
,然后简单地状态。HTTP\u 200\u OK
from flask import jsonify
class SomeView(MethodView):
def post(self, *args, **kwargs):
if "csv_file" not in request.files:
return jsonify({'errors': 'No csv_file key in request.files.'}), 400