我正在尝试使用 FastAPI 执行简单的
POST
操作。我使用 BaseModel
创建了一个基本结构,它只有两个属性,即 name
和 roll
。
import uvicorn
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
roll: int
app = FastAPI()
@app.post("/")
async def create_item(item: Item):
return item
if __name__ == '__main__':
uvicorn.run(app, port=8080, host='0.0.0.0')
我想使用此
POST
操作发布这些数据 -
{"name":"XYZ", "roll":51}
。
我知道 Swagger UI (OpenAPI) 提供的自动文档,我们可以用它来发布数据。但我不想使用它。我想要的是使用 URL
http://localhost:8080/docs
直接发布数据,并希望在浏览器本身中查看结果,而不是在 Swaggger UI 中查看结果。,它允许您以 http://localhost:8080/
格式发送数据(示例如下)。要提交
JSON
数据,请查看这个答案,而要发布
Form
和 Files
/Form
数据,请查看 这个答案。 对于前端,您可以使用
来渲染并返回包含您的
Jinja2Templates
/TemplateResponse
代码等的 HTML
。您可以使用 HTML JS
来提交您的数据,然后form
转换为 form-data
,如here所述。否则,您可以直接发布您的
JSON
数据,如此处所示 - 例如,
JSON
。请参阅此答案以及相关选项。 app.py
body: JSON.stringify({name: "foo", roll: 1})
模板/index.html
from fastapi import FastAPI, Request
from fastapi.templating import Jinja2Templates
from pydantic import BaseModel
app = FastAPI()
templates = Jinja2Templates(directory="templates")
class Item(BaseModel):
name: str
roll: int
@app.post("/")
async def create_item(item: Item):
return item
@app.get("/")
async def index(request: Request):
return templates.TemplateResponse("index.html", {"request": request})