FastAPI是一个现代、快速(高性能)的Python Web框架,专为构建RESTful API设计。它基于标准Python类型提示,自动生成交互式API文档(Swagger UI和ReDoc),并且支持异步操作,非常适合初学者快速上手。
一、环境搭建¶
在开始之前,我们需要先安装FastAPI和一个ASGI服务器(Uvicorn)。打开终端,执行以下命令:
pip install fastapi uvicorn
安装完成后,我们就可以开始编写代码了。
二、第一个GET接口:获取用户列表¶
GET方法用于从服务器获取资源。这里我们将创建一个接口,用于返回一个模拟的用户列表。
代码示例:¶
from fastapi import FastAPI
# 创建FastAPI应用实例
app = FastAPI()
# 模拟数据库数据
users = [
{"id": 1, "name": "张三", "age": 20},
{"id": 2, "name": "李四", "age": 25}
]
# 定义GET接口,路径为"/users"
@app.get("/users")
def get_users():
"""获取所有用户信息"""
return users # 返回用户列表,FastAPI会自动转为JSON格式
代码解释:¶
- 导入FastAPI:
from fastapi import FastAPI导入核心框架类。 - 创建应用实例:
app = FastAPI()实例化FastAPI对象,后续的接口定义都通过这个实例完成。 - 模拟数据:
users列表模拟数据库中的用户数据,便于测试。 - 定义GET接口:
@app.get("/users")装饰器指定接口的访问路径为/users,请求方法为GET。def get_users()是处理该请求的函数,返回值会自动序列化为JSON格式返回给客户端。
效果测试:¶
运行代码后,在终端执行:
uvicorn main:app --reload
(注:main是你的Python文件名,app是创建的FastAPI实例名,--reload参数表示代码修改后自动重启服务器)
打开浏览器访问 http://localhost:8000/docs,你会看到FastAPI自动生成的交互式API文档(Swagger UI)。点击GET /users接口旁的”Try it out”,然后点击”Execute”,即可看到返回的用户列表。
三、第二个POST接口:创建新用户¶
POST方法用于向服务器提交数据,这里我们将创建一个接口,接收新用户的信息并返回创建的用户。
代码示例:¶
from fastapi import FastAPI
from pydantic import BaseModel # 用于定义请求数据格式
app = FastAPI()
# 模拟数据库数据
users = [
{"id": 1, "name": "张三", "age": 20},
{"id": 2, "name": "李四", "age": 25}
]
# 定义请求数据模型:用户信息
class UserCreate(BaseModel):
name: str # 姓名,字符串类型
age: int # 年龄,整数类型
# 定义POST接口,路径为"/users"
@app.post("/users")
def create_user(user: UserCreate):
"""创建新用户"""
# 生成新用户ID(假设最大ID+1)
new_id = max([u["id"] for u in users]) + 1 if users else 1
new_user = {"id": new_id, **user.dict()} # **user.dict() 解包字典
users.append(new_user)
return new_user # 返回创建后的用户信息
代码解释:¶
- Pydantic模型:
UserCreate类继承自BaseModel,用于定义POST请求需要接收的数据格式。这里要求必须提供name(字符串)和age(整数),FastAPI会自动验证输入数据类型,避免无效数据。 - POST接口定义:
@app.post("/users")装饰器指定请求路径为/users,方法为POST。def create_user(user: UserCreate)中的user: UserCreate表示请求体的数据类型为UserCreate模型,FastAPI会自动解析请求中的JSON数据并传入该参数。 - 逻辑处理:根据现有用户的最大ID生成新用户ID,将新用户信息添加到
users列表中,并返回创建后的用户。
效果测试:¶
在Swagger UI中点击POST /users接口,填写请求体:
{
"name": "王五",
"age": 30
}
点击”Execute”后,即可看到新用户被创建并返回。此时再访问GET /users接口,就能看到王五的信息已被加入列表。
四、总结¶
通过以上两个示例,我们完成了一个简单的RESTful API框架:
- GET方法:用于获取资源(如用户列表),代码简洁,直接返回数据。
- POST方法:用于提交数据(如创建新用户),通过Pydantic模型实现数据验证,确保输入格式正确。
- FastAPI优势:自动生成API文档,无需手动写文档;类型提示和数据验证,减少错误;高性能和异步支持,未来可扩展性强。
接下来,你可以尝试扩展接口:
- 添加路径参数(如/users/{user_id}获取单个用户)
- 实现PUT(更新)和DELETE(删除)方法
- 结合数据库(如SQLite)存储真实数据
FastAPI的学习曲线很平缓,文档完善且交互式,非常适合作为API开发的入门框架。现在,动手实践吧!