外观
Path路径参数
声明路径参数
可以使用与Python格式化字符串相同的语法来声明路径参数或者变量。如:
from fastapi import FastAPI
app = FastAPI()
@app.get('/items/{item_id}')
async def read_item(item_id):
return {'item_id': item_id}路径参数的类型与转换
路径参数有很多类型,如int、float、str。可以使用标准的Python类型注释来声明路径参数的类型。如:
from fastAPI import FastAPI
app = FastAPI()
@app.get('/items/{item_id}')
async def read_item(item_id: int):
return {'item_id': item_id}上述示例中,设定了参数item_id的类型为int。此外,可以转换路径参数类型。例如在浏览器中输入127.0.0.1:8000/items/3,item_id就是整型3而不是字符串'3'。因此只要有了类型检查,FastAPI就会自动提供请求解析。
数据类型转换
运行上方的代码时,如果输入了一个非int型的路由,如127.0.0.1:8000/items/foo,将会显示一个友好的HTTP错误页,如下图。

错误的原因就是foo不是int类型的数据,由于不存在对应的路由。而尝试输入float类型的数据也会报错。
在浏览器中访问127.0.0.1:8000/docs,将会在交互式API文档中显示参数类型,如下图。

指定路径顺序
在创建路径时,可能会遇到一个路由匹配两个路由模式串的情况,这时候就需要指定路径顺序,来决定该路由应该由哪个路由处理程序处理。
在下方的例子中,我们设置两个路由:/user/me和/user/{user_id},且不为user_id设置类型。这样输入路由/user/me时,它就会同时匹配两个路由。当设定路由顺序时,它们的匹配就有优先级,我们设定/user/me优先于/user/{user_id}。
指定路径顺序的方式就是优先级高的先声明。如:
from fastapi import FastAPI
app = FastAPI()
@app.get('/user/me')
def read_user_me():
return {'user': 'the current user'}
@app.get('/user/{user_id}')
def read_user_id(user_id):
return {'user': user_id}