两小时快速入门 FastAPI--第一回

两小时快速入门 FastAPI--第一回

一、FastAPI 简介

FastAPI 是一个用于开发 Web API 的 Python 框架。

它的主要特点是:

  • 编写简单
  • 支持 Python 类型注解
  • 自动进行参数校验
  • 自动生成接口文档
  • 适合前后端分离、AI 服务和内部接口开发

FastAPI 项目启动后,可以通过下面的地址查看接口文档:

text 复制代码
http://127.0.0.1:8000/docs

二、本次任务目标

本次练习主要完成以下内容:

  • 使用 uv 创建 FastAPI 项目
  • 安装 FastAPI
  • 启动 FastAPI 服务
  • 编写两个简单的 GET 接口
  • 学习路径参数和查询参数的使用

三、完成任务的整个流程

1. 创建项目

在 PowerShell 中新建练习目录:

bash 复制代码
mkdir fastapi-2h
cd fastapi-2h
uv init
uv add "fastapi[standard]"

其中:

  • uv init:初始化 Python 项目
  • uv add "fastapi[standard]":安装 FastAPI 和常用依赖

2. 编写代码

打开项目中的 main.py,写入以下代码:

python 复制代码
from fastapi import FastAPI

# 创建 FastAPI 应用实例,并设置接口文档中显示的标题。
app = FastAPI(title="我的两个小时FastAPI练习")

# 定义根路径接口:当访问 http://127.0.0.1:8000/ 时,会执行这个函数。
@app.get("/")
def root():
    # 返回一个 JSON 数据,表示 FastAPI 服务已经启动。
    return {"message": "FastAPI 已经启动"}

# 定义带路径参数的接口:name 从 URL 路径中读取,age 从查询参数中读取。
# 例如:/hello/张三?age=18
@app.get("/hello/{name}")
def say_hello(name: str, age: int | None = None):
    # 返回问候信息,并把传入的年龄一并返回。
    return {"message": f"你好,{name}", "age": age}

结果如图所示:

代码中一共定义了两个接口。

第一个接口:

text 复制代码
GET /

访问:

text 复制代码
http://127.0.0.1:8000/

返回:

json 复制代码
{
  "message": "FastAPI 已经启动"
}

第二个接口:

text 复制代码
GET /hello/{name}

访问:

text 复制代码
http://127.0.0.1:8000/hello/张三?age=18

其中:

  • 张三 是路径参数 name
  • 18 是查询参数 age

返回结果:

json 复制代码
{
  "message": "你好,张三",
  "age": 18
}

3. 启动项目

在 PowerShell 中执行:

bash 复制代码
uv run fastapi dev main.py

这是 FastAPI 开发环境下常用的启动方式。

其中:

  • uv run:在当前 uv 项目环境中运行命令
  • fastapi dev:以开发模式启动 FastAPI
  • main.py:指定项目入口文件

启动成功后,访问:

text 复制代码
http://127.0.0.1:8000

接口文档地址为:

text 复制代码
http://127.0.0.1:8000/docs

四、总结

本次练习完成了一个基础的 FastAPI 项目。

通过这次练习,主要学习了:

  • 使用 uv 初始化项目和安装依赖
  • 创建 FastAPI 应用
  • 编写 GET 接口
  • 使用路径参数和查询参数
  • 启动 FastAPI 开发服务器
  • 使用 /docs 测试接口

这是 FastAPI 最基础的使用方式,后续可以继续学习 POST 请求、Pydantic 数据模型、数据库连接和项目路由拆分。

相关推荐
天才测试猿14 分钟前
实例介绍:Unittest框架及自动化测试实现流程
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
a11177617 分钟前
中文优先的企业 RAG 知识库 开源项目
开发语言·开源·kotlin
破z晓23 分钟前
javascript 导出excel表
开发语言·javascript·excel
西门啐血1 小时前
上位机开发之假装有设备,使用 C# 模拟串口设备
开发语言·mongodb·c#
veminhe1 小时前
元数据索引有关的错
人工智能·python
一次旅行1 小时前
AutoAWQ完整实战:MIT激活感知AWQ量化,模型显存减半、推理提速且精度无损
人工智能·python·算法
ask_baidu1 小时前
python实现Doris的streamLoad
开发语言·python
GrowthDiary0071 小时前
算法题:寻找二维数组top k问题
数据结构·python·算法
阿米亚波2 小时前
【C++ STL】std::unordered_multiset
开发语言·数据结构·c++·笔记·stl
丙氨酸長鏈2 小时前
[Bukkit插件开发]手持发射器箭矢机枪 教学文档 面向Python/C#开发者入门Java与Bukkit API
java·python·c#