The Request Object
Every HTTP request has:
- method (GET/POST/…)
- URL path
- query string
- headers
- optional body (form data / JSON)
In Flask, you access request data through flask.requestflask.request.
Importing request
from flask import requestfrom flask import requestrequestrequest is a context-local proxy that points to the current request.
Common request attributes
request.methodrequest.method— HTTP methodrequest.argsrequest.args— query parameters (MultiDict)request.formrequest.form— form fields from POST body (MultiDict)request.filesrequest.files— uploaded filesrequest.jsonrequest.json/request.get_json()request.get_json()— JSON payloadrequest.headersrequest.headers— request headersrequest.cookiesrequest.cookies— cookies
Quick demo route
from flask import Flask, request
app = Flask(__name__)
@app.route("/inspect", methods=["GET", "POST"])
def inspect():
return {
"method": request.method,
"args": request.args,
"form": request.form,
"content_type": request.content_type,
}from flask import Flask, request
app = Flask(__name__)
@app.route("/inspect", methods=["GET", "POST"])
def inspect():
return {
"method": request.method,
"args": request.args,
"form": request.form,
"content_type": request.content_type,
}Note: request.argsrequest.args and request.formrequest.form are MultiDict objects; Flask can serialize them in JSON responses, but you may want to cast them to dict for clarity.
Important security idea
Treat everything from requestrequest as untrusted:
- validate type
- validate allowed values
- sanitize output
Later, Flask-WTF + validators automate a lot of this.
If this helped you, consider buying me a coffee ☕
Buy me a coffeeWas this page helpful?
Let us know how we did
