创建一个简单的FastAPI Web应用程序
示例代码
前提:虚拟环境中已下载FastAPI框架,包含uvicorn(ASGI服务器)。并且虚拟环境已激活。
在我的项目目录fastapi_project下创建一个名为books.py的文件,代码如下:
from fastapi import FastAPI
app = FastAPI()
@app.get('/books')
async def get_all_books():
books = {
1: {'标题': 'Python编程', '分类': '编程'},
2: {'标题': '图解HTTP', '分类': '计算机网络'},
}
return books
在终端(当前工作路径在FastAPI项目目录下)输入指令uvicorn books:app --reload

打开 http://127.0.0.1:8000/books 链接,页面显示如下:

逐个分析
导入FastAPI类
from fastapi import FastAPI是导入FastAPI类,这个类包含Python Web应用程序相关的方法和属性,是使用FastAPI框架的主要入口。
下载FastAPI框架到虚拟环境成功后,在虚拟环境目录下的第三方库目录虚拟环境目录\Lib\site-packages中能找到fastapi目录,它就是FastAPI框架的一个Python包(目录中含有__init__.py文件)。

fastapi包中有一个名为applications.py的文件,这个文件中定义了FastAPI类的具体实现。

fastapi包的__init__.py文件中导入了applications.py文件中的FastAPI,而导入一个包时会先执行一遍包中的__init__.py文件,所以可以直接通过fastapi包来导入FastAPI类。

实例化FastAPI类
app = FastAPI()是实例化FastAPI类,它表示创建一个FastAPI应用对象,这个应用实例可以定义路由和把uvicorn转交的HTTP请求分发到对应的处理函数。
注册路由
注册路由包含定义路由(HTTP请求方法与路径)和对应的处理函数。
@app.get('/books')
async def get_all_books():
books = {
1: {'标题': 'Python编程', '分类': '编程'},
2: {'标题': '图解HTTP', '分类': '计算机网络'},
}
return books
定义路由
其中@app.get('/books')是定义路由,表示接收路径为/books并且方法为GET的HTTP请求。
FastAPI类中定义了get()方法,它返回self.router属性的get()方法。

FastAPI类初始化时定义了self.router属性,它是APIRouter类的实例,它被组合到了FastAPI类中。

FastAPI中的路径操作(path operation)指定义一个完整的API,包含路径、HTTP请求方法和处理函数。 而APIRouter类的get()方法用于注册路径操作中方法为 GET 的那一种——即往路由清单里添加一条“路径 + GET 请求方法 + 处理函数”的完整 API 定义。

而APIRouter类的get()方法的返回值为self.api_route,api_route是APIRouter类的一个方法(函数),它返回一个装饰器,这个装饰器的作用是接收处理函数,把它连同路径、GET 方法一起打包登记进路由清单,然后把函数原样返回。@app.get('/books') 这行代码的最终效果,就是注册一条方法为 GET 的路径操作。

定义处理函数
紧接在装饰器函数@app.get('/books')之后的就是处理函数,以下代码是展示所有图书,返回JSON格式:
async def get_all_books():
books = {
1: {'标题': 'Python编程', '分类': '编程'},
2: {'标题': '图解HTTP', '分类': '计算机网络'},
}
return books
运行FastAPI应用程序
使用uvicorn
uvicorn 是能运行 FastAPI 应用程序的 ASGI 服务器。在项目目录的虚拟环境下输入命令uvicorn books:app --reload即可运行:books:app 表示books.py 文件中的 app 应用实例。uvicorn的使用格式为 uvicorn 应用 选项,选项可省略;--reload 表示开发模式,代码修改后 uvicorn 会自动重启服务器并加载新代码,刷新浏览器即可看到变化。运行成功后即可打开链接http://127.0.0.1:8000/books查看编写好的FastAPI应用。

使用fastapi.exe
- 生产模式:
fastapi run books.py - 开发模式:
fastapi dev books.py

浙公网安备 33010602011771号