使用 FastAPI 時,可以在沒有 Swagger UI 中介的情況下發布 JSON 資料。以下是實現此目的的方法:
使用基於 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>
或者,您可以使用 Jinja2 範本和 HTML 表單來提交資料。具體方法如下:
<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>
<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中文網其他相關文章!