A consumer of my REST API says that on occasion I am returning a 400 Bad Request - The request sent by the client was syntactically incorrect. error.
My application (Python/Flask) logs don't seem to be capturing this, and neither do my webserver/Nginx logs.
Edit: I would like to try to cause a 400 bad request in Flask for debugging purposes. How can I do this?
Following James advice, I added something similar to the following:
@app.route('/badrequest400')
def bad_request():
return abort(400)
When I call this, flask returns the following HTML, which doesn't use the "The request sent by the client was syntactically incorrect" line:
400 Bad RequestBad Request
The browser (or proxy) sent a request that this server could not understand.
(I'm not sure why it isn't including the
tags.It appears to me that there are different variations of the 400 error message. For example, if I set a cookie to a value of length 50,000 (using Interceptor with Postman), I'll get the following error from Flask instead:
Bad RequestBad Request
Error parsing headers: 'limit request headers fields size'
Is there a way to get Flask to through the different variations of 400 errors?
解决方案
You can use abort to raise an HTTP error by status code.
from flask import abort
@app.route('/badrequest400')
def bad_request():
abort(400)