可以用类似Python格式化字符串使用的相同语法来声明路径参数或变量。
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id):
return {"item_id": item_id}
路径参数item_id的值将递给你的函数。
打开http://127.0.0.1:8000/items/foo,你会看到这样的响应。
{"item_id":"foo"}
可以在函数中使用标准的 Python 类型提示来声明路径参数的类型。
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
声明路径参数的类型将给你的函数提供编辑器支持,包括错误检查、自动完成等。
打开http://127.0.0.1:8000/items/3,那么你会看到下面的响应。
{"item_id":3}
打开http://127.0.0.1:8000/items/foo,将有HTTP错误。
{
"detail": [
{
"loc": [
"path",
"item_id"
],
"msg": "value is not a valid integer",
"type": "type_error.integer"
}
]
}
打开http://127.0.0.1:8000/items/4.2也会有类似宝座,FastAPI同时提供了数据解析和数据验证。
打开浏览器http://127.0.0.1:8000/docs,文档也有更新。
http://127.0.0.1:8000/redoc如下:
所有的数据验证都是由pydantic在幕后进行的,可以对str、float、bool以及许多其他复杂的数据类型使用相同的类型声明。
路径的顺序很重要,固定路径建议放在首位。比如同时/users/me和/users/{user_id}这样的路径来获取某个特定用户的ID的数据。
from fastapi import FastAPI
app = FastAPI()
@app.get("/users/me")
async def read_user_me():
return {"user_id": "the current user"}
@app.get("/users/{user_id}")
async def read_user(user_id: str):
return {"user_id": user_id}
请求主体是由客户发送给你的API的数据。响应体是你的API发送给客户端的数据。你的API几乎总是要发送响应体。但是客户并不一定需要发送请求体。
注意:要发送数据,你应该使用POST(最常见的方法)、PUT、DELETE或PATCH。用GET请求发送主体在规范中没有定义行为。
尽管如此,FastAPI还是支持使用GET请求,不过只适用于非常复杂或极端的用例。由于不鼓励使用GET,所以在使用GET时,Swagger UI的交互式文档不会显示body的文档,而且中间的代理可能不支持它。
使用pydantic来声明JSON数据模型(Data Models或Data Shapes)。
首先,你需要从pydantic中导入BaseModel,然后用它来创建定义你想要接收的模式或数据形状的子类。然后将你的数据模型声明为继承自BaseModel的类,所有属性使用标准的Python类型。
from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
app = FastAPI()
@app.put("/items/{item_id}")
async def create_item(item_id: int, item: Item):
return {"item_id": item_id, **item.dict()}
astAPI将。
文档也会自动更新:
IDE的自动完成提示:
类型错误检查:
pydantic PyCharm插件来改善你的编辑器支持。VS Code,那么你就可以通过Pylance获得最好的开发者体验。
FastAPI可以涵盖后端框架所需的大部分用例,甚至包括那些不是严格意义上的API。你可以深入研究文档以解决你的特定用例。
其他资料:
在本教程中,你了解了FastAPI,以及如何使用它来创建生产级的API。
你现在已经准备好开始为你的项目创建你自己的高性能的API了。如果你想更深入地了解FastAPI的世界,那么你可以遵循FastAPI文档中的官方 User Guide
。
页面更新:2024-05-19
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号