Matthew Moisen Matthew Moisen - 1 year ago 177
Python Question

How to intentionally cause a 400 Bad Request in Python/Flask?

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.

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:

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:

<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>The browser (or proxy) sent a request that this server could not understand.</p>

(I'm not sure why it isn't including the

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:

<title>Bad Request</title>
<p>Bad Request</p>
Error parsing headers: 'limit request headers fields size'


Is there a way to get Flask to through the different variations of 400 errors?

Answer Source

Why don't you define a URL route that simply throws an HTTP/400 error?

def bad_request():
    return abort(400)
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download