首頁  >  文章  >  後端開發  >  如何在沒有 Swagger UI 的情況下向 FastAPI 提交 JSON 資料?

如何在沒有 Swagger UI 的情況下向 FastAPI 提交 JSON 資料?

Susan Sarandon
Susan Sarandon原創
2024-10-24 02:25:29848瀏覽

How to Submit JSON Data to FastAPI without Swagger UI?

在 FastAPI 中繞過 Swagger UI 進行 JSON 資料輸入

使用 FastAPI 時,可以在沒有 Swagger UI 中介的情況下發布 JSON 資料。以下是實現此目的的方法:

用於 JSON 資料提交的 JavaScript 介面

使用基於 JavaScript 的介面(例如 Fetch API)以 JSON 格式傳送資料。以下是範例:

<code class="javascript">var data = {
    name: "foo",
    roll: 1
}

fetch('/', {
    method: 'POST',
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    },
    body: JSON.stringify(data)
}).then(resp => {
    return resp.text();
}).then(data => {
    // Handle the response
});</code>

HTML 表單和 Jinja2 範本

或者,您可以使用 Jinja2 範本和 HTML 表單來提交資料。具體方法如下:

app.py

<code class="python">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})</code>

index.html

<code class="html"><form method="post">
    <input type="text" name="name" value="foo">
    <input type="number" name="roll" value="1">
    <input type="submit" value="Submit">
</form>

<div id="responseArea"></div>

<script>
    document.querySelector('form').addEventListener('submit', (event) => {
        event.preventDefault();
        var data = new FormData(event.target);

        fetch('/', {
            method: 'POST',
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(Object.fromEntries(data))
        }).then(resp => {
            return resp.text();
        }).then(data => {
            document.getElementById("responseArea").innerHTML = data;
        }).catch(error => {
            console.error(error);
        });
    });
</script></code>

透過使用這些技術,您可以輕鬆地將JSON 資料發佈到FastAPI 後端,而無需依賴在Swagger UI 介面上。

以上是如何在沒有 Swagger UI 的情況下向 FastAPI 提交 JSON 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn