FastAPI的基础了解和简单入门 《一》
环境准备与第一个应用新建项目选择FastAPI第一次创建配置新的生产环境创建main.py文件步骤1:从fastAPI包中导入FastAPI类from fastapi import FastAPI步骤2:创建 FastAPI 类的实例#这个 app 对象就是整个 Web 应用后续所有的路由、配置都挂载在它上面 # 括号里的参数是可选的用于给自动生成的 API 文档添加标题、描述和版本号步骤3定义路由告诉服务器“当有人访问某个 URL 时执行哪个函数”类似于python的路由分发 但不用挂载主路由# app.get(/) 是一个装饰器Decorator# 它表示当客户端使用 GET 方法访问根路径 / 时触发下面这个函数 app.get(/)async 加在def前面代表是异步函数如果不加就是普通的同步函数可以直接返回json字典格式启动服务器uvicorn main:app --reload或者 uvicorn main:app --host 127.0.0.1 --port 8000 --reloaduvicornASGI 服务器程序专门用于运行异步 Web 应用。main:appmain指的是main.py文件名app指的是文件里那个app FastAPI()的变量名。中间用冒号分隔。--reload开启热重载模式。当你修改代码并保存后服务器会自动重启开发时必须加上。验证结果推荐第二种’打开浏览器访问http://127.0.0.1:8000→ 你会看到 JSON 响应http://127.0.0.1:8000/docs→ 自动生成的 Swagger UI 交互式文档。你可以在这里直接测试接口http://127.0.0.1:8000/redoc→ 另一种风格的文档。路径参数什么是路径参数路径参数是URL路径中的动态可变部分格式为{参数名}用于标识「具体的资源」如物品ID、用户ID与postman使用方法类似例如/items/11是路径参数item_id的值/users/100100是路径参数user_id的值FastAPI会自动提取路径中的对应值并传递给路由处理函数。fomodibi[{id: 1, name: 张三}, {id: 2, name: ipad}, {id: 3, name: 李四}, {id: 4, name: watch}, {id: 5, name: 王五}]app.get(/items/{id},summary这是第六个接口,description这是第六个接口的描述) 参数可以指定类型如float str int 比如下方id就是int 字符串str 可以默认不写 async def get_item(id:int): for item in fomodibi: if item[id] id: return {code: 200, msg: success, data: item}✨ 核心优势无需手动写if isinstance(item_id, int)FastAPI自动完成类型校验路径参数的类型注解支持Python原生类型# 拓展不同类型的路径参数示例 # 1. 字符串类型默认可省略str注解 app.get(/users/{username}, summary字符串路径参数) def read_user(username:str): # str注解可省略默认按字符串处理 return {username: username} # 2. 布尔类型自动解析true/false为布尔值 app.get(/status/{is_active}, summary布尔路径参数) def check_status(is_active: bool): return {is_active: is_active, type: type(is_active).__name__} # 3. 浮点数类型 app.get(/price/{amount}, summary浮点路径参数) def get_price(amount: float): return {amount: amount, type: type(amount).__name__}测试不同类型参数访问/users/张三→ 字符串类型正常返回访问/status/true→ 自动转为bool: True访问/price/9.9→ 浮点类型正常返回访问/price/abc→ 自动返回类型校验错误高级用法数值范围校验使用Path类导包from fastapi import PathPath类参数ge(≥)、le(≤)、gt()、lt()、title、description等完整示例带多规则校验枚举限制固定可选值如果路径参数只能是固定的几个值如物品类型只能是fruit/vegetable/meat可使用Enum枚举类限制# 枚举路径参数示例 from enum import Enum # 导入Python内置枚举类 # 步骤1定义枚举类继承str和Enum确保值为字符串 class ItemType(str, Enum): FRUIT fruit # 水果 VEGETABLE vegetable # 蔬菜 MEAT meat # 肉类 # 步骤2将路径参数类型指定为枚举类 app.get(/items/type/{item_type}, summary枚举路径参数) def get_item_type(item_type: ItemType): 枚举路径参数接口仅支持fruit/vegetable/meat # 枚举值的常用操作 return { item_type: item_type, # 枚举对象 value: item_type.value, # 枚举对应的字符串值 name: item_type.name, # 枚举名称FRUIT/VEGETABLE/MEAT message: f物品类型为{item_type.value} }测试枚举参数访问/items/type/fruit→ 正常返回value: fruit访问/items/type/vegetable→ 正常返回访问/items/type/fish→ 自动报错提示可选值为fruit/vegetable/meat✨ 优势自动生成文档时枚举值会显示为下拉选项客户端无需记忆参数值路径参数包含斜杠/默认情况下路径参数会被/分割若需要路径参数包含/如/files/home/user/doc.txt需使用「路径转换器」path# 包含斜杠的路径参数 app.get(/files/{file_path:path}, summary包含斜杠的路径参数) def read_file(file_path: str): 路径参数包含斜杠示例使用:path转换器 示例访问/files/home/user/doc.txt → file_path home/user/doc.txt return {file_path: file_path, message: 文件路径接收成功}测试效果访问/files/home/user/doc.txt→file_path: home/user/doc.txt访问/files/data/report/2025.pdf→file_path: data/report/2025.pdf