第一个 FastAPI 应用

创建一个名为 main.py 的文件,添加以下代码:

实例

from fastapi import FastAPI

app = FastAPI ( )

@ app. get ( "/" )
def read_root ( ) :
    return { "Hello" : "World" }

在命令行中运行以下命令以启动应用:

									uvicorn main:app --reload
								

现在,打开浏览器并访问 http://127.0.0.1:8000 ,你应该能够看到 FastAPI 自动生成的交互式文档,并在根路径 ("/") 返回的 JSON 响应。

接下来我们来丰富下代码功能,并做具体说明。

以下的 FastAPI 应用,使用了两个路由操作( / /items/{item_id} ):

实例

from typing import Union

from fastapi import FastAPI

app = FastAPI ( )


@ app. get ( "/" )
def read_root ( ) :
    return { "Hello" : "World" }


@ app. get ( "/items/{item_id}" )
def read_item ( item_id: int , q: Union [ str , None ] = None ) :
    return { "item_id" : item_id , "q" : q }

代码拆解分析

1、导入必要的模块和类:

									from typing import Union
from fastapi import FastAPI
								

以上实例导入了 Union 类型,用于支持多种数据类型的参数注解。

2、创建 FastAPI 实例:

									app = FastAPI()
								

在这一步,创建了一个 FastAPI 应用的实例,它将用于定义和管理应用的各个组件,包括路由。

FastAPI 是 FastAPI 框架的主要类。

3、定义根路径 / 的路由操作:

									@app.get("/")
def read_root():
    return {"Hello": "World"}
								

这个路由操作使用了 @app.get("/") 装饰器,表示当用户通过 HTTP GET 请求访问根路径时,将执行 read_root 函数。函数返回一个包含 {"Hello": "World"} 的字典,这个字典会被 FastAPI 自动转换为 JSON 格式并返回给用户。

4、定义带路径参数和查询参数的路由操作:

									@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}
								

这个路由操作使用了 @app.get("/items/{item_id}") 装饰器,表示当用户通过 HTTP GET 请求访问 /items/{item_id} 路径时,将执行 read_item 函数。

函数接受两个参数:

  • item_id --是路径参数,指定为整数类型。
  • q -- 是查询参数,指定为字符串类型或空(None)。

函数返回一个字典,包含传入的 item_id 和 q 参数。

q 参数通过 Union[str, None] 表示可以是字符串类型或空,这样就允许在请求中不提供 q 参数。

使用浏览器访问 http://127.0.0.1:8000/items/5?q=yssmx,你将会看到如下 JSON 响应:

										{"item_id": 5, "q": "yssmx"}
									

如下图所示: