How to pass parameters in POST request in FastAPI ?
Unlike GET request where you pass data as query string, in POST request you send the data in request body.
Let’s first create a POST endpoint and it’s corresponding method.
from fastapi import FastAPI
my_app = FastAPI()
@my_app.post("/getInformation")
def getInformation():
return {
"status" : "SUCCESS",
"data" : []
}
To pass request data object, you need to create a class of the data object that you intend to pass as POST body request.
from pydantic import BaseModel
my_app = FastAPI()
class Info(BaseModel):
id : int
name : str
As seen in the above code, you have imported BaseModel from pydantic
and the Info
class
inherits from BaseModel
.
I have created Info
class with members id
and name
. Receiving POST request data is same as receiving GET request. In the getInformation
method define a variable of type Info
.
@my_app.post("/getInformation")
def getInformation(info : Info):
return {
"status" : "SUCCESS",
"data" : info
}
Here is how the complete app.py
file looks:
from fastapi import FastAPI
from pydantic import BaseModel
my_app = FastAPI()
class Info(BaseModel):
id : int
name : str
@my_app.post("/getInformation")
def getInformation(info : Info):
return {
"status" : "SUCCESS",
"data" : info
}
Save the above changes and restart the server. Try posting some data to the endpoint http://localhost:8000/getInformation. Whatever data you post, you’ll get in the response. I tried posting the following JSON,
{
"id" : 100,
"name" : "Jay"
}
Here is the response JSON from the POST endpoint.
{
"status": "SUCCESS",
"data": {
"id": 100,
"name": "Jay"
}
}