如何在不使用 Swagger UI 的情况下将 JSON 数据发布到 FastAPI 后端?

问题描述 投票:0回答:1

我正在尝试使用 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 中查看结果。
    

python json api post fastapi
1个回答
4
投票
Fetch API

,它允许您以 http://localhost:8080/ 格式发送数据(示例如下)。要提交

JSON
 数据,请查看 
这个答案
,而要发布 Form
Files
/
Form
数据,请查看
这个答案
对于前端,您可以使用

JSON

 来渲染并返回包含您的 
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})

	
© www.soinside.com 2019 - 2024. All rights reserved.