两小时快速入门 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 数据模型、数据库连接和项目路由拆分。

相关推荐
威哥爱编程2 分钟前
模拟面试智能体开发实战 03:AI 面试官太客气?人设 Prompt 让它像个真考官
python·agent·harmonyos
量化分析码农12 分钟前
股票数据接口返回字段逐项解析:从在线验证到 Python 数据校验
python
Dmz丶1 小时前
前端转 AI 100 天 Day 42:跨模型对比实战——用数据选模型,不靠“听说”
python
路溪非溪1 小时前
python标准库使用总结
开发语言·python
青少儿编程课堂2 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:折半搜索优化子集枚举(Meet in the Middle)解析
c++·python·算法·bfs·信息学竞赛
用户956256254292 小时前
五分钟用 E2B SDK 打通沙箱:环境变量只改三行
python·api
用户95179422510293 小时前
最小循环:让 Agent 跑起来(I1)
python·agent
沉默小管3 小时前
上班鼓励器_桌宠版
python
SomeOtherTime3 小时前
Rust 面向对象介绍(AI回答)
开发语言·python·rust
duansamve3 小时前
Flask中视图函数接收请求数据和返回响应实例
python·flask