我正在使用 FastAPI 和 python 构建一些小型应用程序。 我正在尝试向我的应用程序添加发布请求,但每次我尝试发出发布请求时,它都会显示带有 400 状态的无效标头(错误请求)。
请看下面的代码- Python + fastApi:
from fastapi import APIRouter, HTTPException, Request, FastAPI
from fastapi.responses import JSONResponse
from pydantic import BaseModel
app = FastAPI()
router = APIRouter()
class UserCreate(BaseModel):
user_id: int
username: str
@router.post("/create_user/")
def create_user(user_data: UserCreate):
return {
"msg": "Data received successfully",
"user_id": user_data.user_id,
"username": user_data.username,
}
app.include_router(router, prefix="/mytest")
我使用
daphne
作为服务器来运行 fastApi + myapplication。类似 - daphne -b 127.0.0.1 -p 8000 app.main:app
(我也尝试了 uvicorn,与 uvicorn 出现同样的错误)
奇怪-如果我运行相同的代码并仅创建 uvicorn 实例,例如- 主要.py:
from fastapi import FastAPI
from pydantic import BaseModel
app = APIRouter()
class UserCreate(BaseModel):
user_id: int
username: str
@app.post("/create_user/")
async def create_user(user_data: UserCreate):
user_id = user_data.user_id
username = user_data.username
return {
"msg": "we got data succesfully",
"user_id": user_id,
"username": username,
}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
上面的代码执行没有任何错误/异常,
python -u main.py
我错过了什么?
您已经定义了路线并在模型中包含了路由器,这导致了问题,如果您将它们移到模型之外,它应该可以正常工作。