FastAPI入门:Python后端开发新手指南

敏锐森林
2025-06-29 22:25
阅读 724

开篇:什么是FastAPI?

开篇:什么是FastAPI?

你可能听说过“后端”这个词,简单来说,后端就是网站或者APP在后台运行的那一部分。它负责处理用户请求、管理数据,并与数据库等进行交互。
那什么是FastAPI呢?
FastAPI 是一个现代的、快速(高性能)的 Python Web 框架,专门用于构建 API(应用程序编程接口)。你可以把它理解为一个“工具包”,帮助你用 Python 快速写出能被 APP 或网页调用的“接口服务”。

比如,当你在某个 APP 上搜索商品时,它背后其实是在调用一个“搜索接口”,而这个接口很可能就是用 FastAPI 编写的。

为什么选择 FastAPI?

  • :它是目前最快的 Python Web 框架之一
  • 易用:代码写法简洁,容易上手
  • 自动生成文档:编写完接口,会自动帮你生成漂亮的接口文档
  • 支持异步:能处理大量并发请求,适合高并发场景

本教程将带你从零开始,一步步掌握 FastAPI 的使用!


环境准备:搭建你的开发环境

环境准备:搭建你的开发环境

要开始使用 FastAPI,我们需要先安装一些必要的软件和库。别担心,步骤都挺简单的。

步骤一:安装 Python

首先确保你的电脑上有 Python 3.8 及以上版本

在命令行中输入:

python --version

如果你看到类似下面的输出:

Python 3.10.4

说明已经安装好了。如果没有,请去 https://www.python.org/downloads/ 下载最新版 Python 安装即可。

步骤二:安装 FastAPI 和 Uvicorn

FastAPI 本身只是一个库,我们需要另一个叫做 Uvicorn 的服务器来运行我们的程序。

在命令行中执行以下命令进行安装:

pip install fastapi uvicorn

💡 小提示:pip 是 Python 自带的一个包管理器,用来下载和安装各种 Python 工具。

步骤三:安装编辑器(推荐 VS Code)

虽然你可以用任何文本编辑器写代码,但推荐你使用 Visual Studio Code (VS Code),因为它免费且功能强大,适合初学者。

你可以在这里下载并安装:https://code.visualstudio.com/


核心概念:通俗讲解 FastAPI 的关键知识点

核心概念:通俗讲解 FastAPI 的关键知识点

现在我们来看看 FastAPI 中几个最基础、也是最重要的概念。

1. 创建一个 FastAPI 应用实例

这就像创建了一个“空项目”,你可以往里面添加各种功能。

示例代码:

from fastapi import FastAPI

app = FastAPI()

这段代码做了什么呢?

  • from fastapi import FastAPI:导入 FastAPI 这个类(可以理解为工具)
  • app = FastAPI():创建一个应用对象,后续的功能都会围绕它展开

2. 编写第一个接口 — GET 请求

GET 请求通常是用来获取信息的,比如获取天气、新闻内容等。

示例代码:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def hello():
    return {"message": "Hello, FastAPI!"}

解释一下:

  • @app.get("/"):这是一个“装饰器”,表示当用户访问根路径 / 时,就调用下面的函数。
  • def hello()::定义一个函数,返回一个 JSON 数据。

保存上面这段代码到一个文件中,比如叫 main.py

然后在终端中运行:

uvicorn main:app --reload
  • main 是你的文件名(不带 .py)
  • app 是你在代码中定义的应用对象
  • --reload 表示热加载,意思是修改了代码会自动重启服务

运行后你会看到类似这样的信息:

INFO:     Uvicorn running on http://127.0.0.1:8000

这时候你打开浏览器,访问 http://127.0.0.1:8000,就能看到:

{"message": "Hello, FastAPI!"}

🎉 成功啦!

3. 接口参数传递方式

常见的两种传参方式是:

  • 查询参数(Query Parameters)
  • 路径参数(Path Parameters)

查询参数示例:

@app.get("/search")
def search(q: str):
    return {"query": q}

访问:http://localhost:8000/search?q=fastapi

结果:

{"query": "fastapi"}

路径参数示例:

@app.get("/users/{user_id}")
def get_user(user_id: int):
    return {"user_id": user_id}

访问:http://localhost:8000/users/123

结果:

{"user_id": 123}

可以看到:

  • 查询参数用的是 ?key=value 的形式
  • 路径参数直接嵌入 URL 路径里,适合 ID 类型的数据

4. POST 请求(发送数据)

GET 通常用于获取信息,POST 则常用于提交数据,比如注册、登录等操作。

示例代码:

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: float

@app.post("/items/")
def create_item(item: Item):
    return {"item_name": item.name, "price": item.price}

这里引入了一个新概念:pydantic 的 BaseModel,它可以帮我们做数据校验。你只需要告诉它每个字段是什么类型,它就会自动判断输入是否合法。

访问接口时可以用 POST 请求发送如下 JSON:

{
  "name": "Apple",
  "price": 5.99
}

返回结果是:

{
  "item_name": "Apple",
  "price": 5.99
}

💡 提示:你可以用 Postman 或者浏览器自带的 Dev Tools 来测试 POST 请求。


实战项目:做一个简单的天气查询接口

微服务架构示意图-1

实战项目:做一个简单的天气查询接口

接下来我们来做一个小项目——天气查询接口。用户可以通过接口查某城市的天气。

第一步:创建项目结构

新建一个文件夹,如 weather_api,在里面创建一个 main.py 文件。

第二步:编写接口逻辑

我们不真正去联网查天气,为了简单起见,我们自己模拟一个假数据。

from fastapi import FastAPI
from typing import Optional

app = FastAPI()

# 模拟数据
weather_data = {
    "北京": "晴",
    "上海": "多云",
    "广州": "雷阵雨",
    "深圳": "晴"
}

@app.get("/weather/{city}")
def get_weather(city: str):
    weather = weather_data.get(city)
    if weather:
        return {"city": city, "weather": weather}
    else:
        return {"error": "城市未收录"}

第三步:运行服务并测试接口

进入项目文件夹,在终端执行:

uvicorn main:app --reload

然后访问 http://127.0.0.1:8000/weather/北京,你应该会看到:

{"city": "北京", "weather": "晴"}

如果访问一个不存在的城市,如 http://127.0.0.1:8000/weather/成都,则返回:

{"error": "城市未收录"}

✅ 至此,一个完整的 FastAPI 项目就完成了!


常见问题解答

Q1:运行 uvicorn 报错说模块找不到怎么办?

错误信息可能是:

ModuleNotFoundError: No module named 'fastapi'

说明没有安装相关模块。请按顺序安装:

pip install fastapi uvicorn

Q2:为什么用 async def 写函数?是不是必须的?

不是必须的,除非你要使用异步功能。对于新手,同步写法更容易理解,建议一开始用同步风格。

Q3:为什么我的接口访问不到?

检查以下几点:

  • 是否运行了服务?
  • URL 地址有没有拼错?
  • 端口号默认是 8000,如果有更改请注意
  • 使用浏览器访问时注意不要加 https

Q4:怎么查看接口文档?

FastAPI 会自动帮你生成接口文档,访问下面两个链接之一即可:

  • Swagger UI(更友好):http://localhost:8000/docs
  • ReDoc(另一种样式):http://localhost:8000/redoc

Q5:能不能一次返回多个数据?

当然可以!只要把数据包装成字典或列表就行:

return [{"name": "Alice"}, {"name": "Bob"}]

学习建议:下一步该学什么?

恭喜你完成了第一门课!现在你可以考虑以下几个方向继续深入:

✅ 推荐学习路线

  1. 学习连接数据库(例如 SQLite、MySQL)
    • 学会用 SQLAlchemy 操作数据库
  2. 学习身份验证机制
    • JWT、OAuth2、Token 认证
  3. 进阶:使用异步请求
    • 学会 async def 函数
  4. 部署你的 API
    • 使用 Nginx + Gunicorn + Docker 部署上线
  5. 结合前端开发
    • 用 Vue / React 调用你写的 API

📚 推荐学习资源


结语

数据库设计模型-2

FastAPI 是一个非常现代化又友好的后端框架,非常适合想入门 Python 后端开发的新手。只要你坚持动手练习,很快就能上手写出属于自己的 API 接口。

记住一句话:代码是最好的老师。不断写、不断改、不断试,你终将成为一名优秀的开发者!

🎉 祝你编程之旅愉快!

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝