I have this small fastapi application
import uvicorn
from fastapi import FastAPI, Body, Query
from fastapi import Path
app = FastAPI()
@app.get("/test/{test_id}")
def test(
id: str = Path(...),
q: str = Query(...),
b: str = Body(...)
):
return "Hello world"
def main():
uvicorn.run("run:app", host="0.0.0.0", reload=True, port=8001)
if __name__ == "__main__":
main()
it works as expected.
But I now make some changes as below
import uvicorn
from fastapi import FastAPI, Depends, Body, Query
from fastapi import Path
from pydantic import BaseModel
app = FastAPI()
class Input(BaseModel):
id: str = Path(...)
q: str = Query(...)
b: str = Body(...)
@app.get("/test/{test_id}")
def test(inp: Input = Depends()):
return "Hello world"
def main():
uvicorn.run("run:app", host="0.0.0.0", reload=True, port=8001)
if __name__ == "__main__":
main()
I expect b to be shown as Body in the docs but it is being interpreted as a query string.
What is wrong?