I am usually using Tornado, and trying to migrate to FastAPI.
Let's say, I have a very basic API as follows:
@app.post("/add_data")
async def add_data(data):
return data
When I am running the following Curl request:
curl http://127.0.0.1:8000/add_data -d 'data=Hello'
I am getting the following error:
{"detail":[{"loc":["query","data"],"msg":"field required","type":"value_error.missing"}]}
So I am sure I am missing something very basic, but I do not know what that might be.
Since you are sending a string data, you have to specify that in the router function with typing as
from pydantic import BaseModel
class Payload(BaseModel):
data: str = ""
@app.post("/add_data")
async def add_data(payload: Payload = None):
return payload
Example cURL request will be in the form,
curl -X POST "http://0.0.0.0:6022/add_data" -d '{"data":"Hello"}'