直接将 JSON 数据发布到 FastAPI 后端
问题陈述:
使用 FastAPI 时,用户可能希望将 JSON 数据直接发布到后端,而不使用 Swagger UI 进行文档记录。相反,他们的目标是通过指定的 URL 提交数据并在浏览器中接收结果。
解决方案:
为了实现这一点,JavaScript 库(例如 Fetch API)可以就业。这些工具可以发送 JSON 格式的数据。
对于前端渲染,Jinja2Templates 可用于返回包含 HTML 和 JavaScript 代码的模板。也可以直接发布 JSON 数据,如下面的代码示例所示。
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>
templates/index.html
<code class="html"><!DOCTYPE html> <html> <body> <h1>Post JSON Data</h1> <form method="post" id="myForm"> name : <input type="text" name="name" value="foo"> roll : <input type="number" name="roll" value="1"> <input type="button" value="Submit" onclick="submitForm()"> </form> <div id="responseArea"></div> <script> function submitForm() { var formElement = document.getElementById('myForm'); var data = new FormData(formElement); fetch('/', { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify(Object.fromEntries(data)) }) .then(resp => resp.text()) // or, resp.json(), etc. .then(data => { document.getElementById("responseArea").innerHTML = data; }) .catch(error => { console.error(error); }); } </script> </body> </html></code>
通过这种方法,您可以直接将 JSON 数据发布到 FastAPI 后端,而无需依赖 Swagger UI。数据可以通过前端的表单提交并由后端 API 处理。
以上是如何将 JSON 数据直接发布到 FastAPI 后端?的详细内容。更多信息请关注PHP中文网其他相关文章!