[控场AI]
教程攻略· 9 分钟阅读· 4,895 字

FastAPI入门:前后端分离与RESTful API核心概念详解

FastAPI入门:前后端分离与RESTful API核心概念详解

FastAPI学习前置知识:前后端分离、RESTful API与JSON数据格式

本文系统梳理了学习FastAPI前需要掌握的核心概念:Web开发的前后端分离模式是当前主流,FastAPI天生为后端API开发设计,基于Starlette的ASGI异步架构实现高性能;RESTful是最主流的API设计规范,以资源为核心通过HTTP方法表达操作语义;JSON作为轻量级数据交换格式已成为事实标准。

引言

FastAPI 是目前 Python Web 框架领域中运行速度最快的框架之一,专为现代前后端分离架构而生。对于刚接触 Web 开发的初学者来说,理解前后端分离的开发模式和 RESTful API 的设计规范,是学习 FastAPI 的第一步。

本文基于B站UP主老肖的 FastAPI 教程,系统梳理 Web 开发模式的核心概念,帮助零基础的开发者快速建立正确的认知框架。

FastAPI教程

Web开发的两种模式

前后端不分离模式

前后端不分离是一种相对传统的开发模式。在这种模式下,客户端浏览器看到的所有内容——包括界面、特效和数据——全部由同一个服务器提供。

具体流程是:浏览器发送请求到应用服务器,服务器查询数据库获取数据,处理业务逻辑,然后将数据渲染到 HTML 模板中,最终返回一个完整的 HTML 页面给浏览器。

这种模式的典型代表包括早期的 PHP(如 WordPress、Laravel 的 Blade 模板)、Java 的 JSP/Servlet、Python 的 Django 模板系统等。服务器端使用模板引擎(Template Engine)将动态数据嵌入 HTML 标记中,生成完整页面后一次性返回给浏览器,这种方式也被称为 SSR(Server-Side Rendering,服务端渲染)。虽然现在被视为「传统」模式,但它在 SEO 优化和首屏加载速度方面仍有优势,因此 Next.js、Nuxt.js 等现代框架又重新引入了服务端渲染的概念,形成了所谓的「同构渲染」方案。

这种模式的主要问题在于:

  • 程序员需要同时处理界面代码、业务逻辑和数据处理
  • 前端界面必须先设计完成,后端才能进行渲染开发
  • 开发效率较低,无法实现前后端团队并行开发

前后端分离模式(主流)

前后端分离是目前企业级项目中 90% 以上采用的开发模式。其核心思想是按技术职责拆分:

  • 前端服务器(静态文件服务器):专门存放和提供 HTML、CSS、JS、图片等静态资源,负责界面展示和交互效果
  • 后端服务器(Python应用服务器):专门处理业务逻辑和数据操作,对外提供统一的 API 接口,返回 JSON 格式数据

前后端分离模式的兴起与 AJAX 技术的普及密切相关。2005 年 Google Maps 大规模使用 AJAX(Asynchronous JavaScript and XML)技术后,浏览器具备了在不刷新页面的情况下与服务器异步通信的能力。随后,Angular(2010)、React(2013)、Vue(2014)等前端框架的出现,使得前端可以独立构建复杂的单页应用(SPA,Single Page Application)。前端通过 Nginx 等静态文件服务器部署,运行时通过 HTTP 请求调用后端 API 获取数据,再由前端框架的虚拟 DOM 机制高效渲染页面。这种架构下,前后端通过 API 契约(通常是接口文档)进行协作,彼此解耦。

这种架构的优势非常明显:

  1. 并行开发:前端团队和后端团队可以同时工作,只要需求确认即可各自推进
  2. 职责清晰:后端只负责数据和逻辑,前端只负责展示和交互
  3. 多端复用:同一套后端 API 可以同时服务于浏览器、手机APP、微信小程序等多种客户端

后端服务器不关心数据最终展示在哪里——无论是浏览器、iOS/Android APP 还是小程序,只要客户端发送请求,后端就返回 JSON 格式的数据。客户端拿到数据后自行决定如何展示。

FastAPI的定位与特点

FastAPI 从诞生之初就是为前后端分离模式设计的。它底层基于 Starlette 框架,天然适合 API 接口开发。

Starlette 是一个轻量级的 ASGI(Asynchronous Server Gateway Interface)框架。ASGI 是 WSGI(Web Server Gateway Interface)的异步升级版本——WSGI 是 Python Web 应用的传统标准接口(Django、Flask 都基于 WSGI),但它只支持同步处理,无法高效处理 WebSocket、长轮询等场景。ASGI 在 2018 年由 Django Channels 项目的作者 Andrew Godwin 提出,支持异步请求处理,使得 Python Web 应用能够利用 asyncio 实现高并发。FastAPI 构建在 Starlette 之上,继承了其高性能的异步处理能力,同时添加了类型提示驱动的数据验证(基于 Pydantic)和自动 API 文档生成等特性。这也是 FastAPI 能够在性能测试中接近 Node.js 和 Go 语言框架的关键原因。

当然,FastAPI 也支持前后端不分离的开发方式——它可以整合 Jinja2 模板引擎来实现页面渲染。但从官方文档的侧重点来看,FastAPI 的核心定位是后端 API 开发框架。

可以这样总结 FastAPI 的定位:

  • 它是目前运行速度最快的 Python Web 后端框架
  • 主要用于前后端分离项目的后端开发
  • 也具备一定的前端渲染能力(通过模板引擎)
  • 支持与 SQLAlchemy 2.0 等 ORM 框架整合

关于 ORM(Object-Relational Mapping,对象关系映射),它是一种将编程语言中的对象与数据库表进行映射的技术,开发者可以用面向对象的方式操作数据库,而无需编写原始 SQL 语句。SQLAlchemy 是 Python 生态中最成熟的 ORM 框架,2023 年发布的 2.0 版本进行了重大重构,引入了全新的声明式映射语法和原生异步支持(通过 asyncio)。FastAPI 与 SQLAlchemy 2.0 的结合特别契合,因为两者都支持 Python 的 async/await 异步编程模型,可以在不阻塞事件循环的情况下执行数据库操作,从而充分发挥 FastAPI 的高并发优势。

RESTful API 接口规范

什么是API接口

API(Application Programming Interface)即应用程序编程接口,是应用程序对外提供的操作数据的入口。这个入口可以是一个函数、一个类,也可以是一个 URL 地址。客户端通过发送 HTTP 请求来调用这些接口,获取或操作数据。

目前市面上主流的 API 接口规范有两种:

  • RESTful:当前最主流的接口开发规范,使用广泛
  • RPC:远程过程调用协议,市场占有率相对较低

RPC(Remote Procedure Call,远程过程调用)是另一种主流的 API 设计范式。与 REST 面向资源不同,RPC 面向动作——客户端调用远程服务就像调用本地函数一样。典型的 RPC 框架包括 Google 的 gRPC(基于 Protocol Buffers 序列化)、Apache Thrift、以及国内广泛使用的 Dubbo。RPC 通常使用二进制协议传输数据,性能优于基于文本的 REST+JSON 组合,因此在微服务内部通信、高性能计算场景中更受青睐。而 REST 因其简单性和通用性,更适合对外暴露的公开 API。在实际企业架构中,往往是对外用 REST、对内用 RPC 的混合模式。

RESTful的核心理念

REST 全称为 Representational State Transfer(表述性状态转移)。虽然中文直译不太好理解,但其核心理念非常清晰:面向资源开发。

REST 架构风格由 Roy Fielding 在 2000 年的博士论文中首次提出。Fielding 是 HTTP/1.1 协议的主要设计者之一,他将 Web 的成功架构原则总结为 REST。REST 定义了六个架构约束:客户端-服务器分离、无状态、可缓存、统一接口、分层系统和按需代码(可选)。其中「统一接口」是 REST 最核心的约束,它要求通过标准的 HTTP 方法对资源进行操作,资源通过 URI 标识,操作结果通过 HTTP 状态码反馈(如 200 成功、201 创建成功、404 未找到、500 服务器错误)。值得注意的是,严格遵循所有 REST 约束的 API 称为 RESTful API,而实际开发中很多 API 只是「类 REST」风格,并未完全遵循所有约束。

RESTful 将所有 API 接口都视为「资源」的操作入口。资源就是数据,URL 路径表示要操作的资源,HTTP 方法表示对资源的操作类型:

HTTP方法操作示例URL说明
POST创建/students添加一个学生
GET查询/students获取所有学生
GET查询/students/{id}获取指定学生
PUT修改/students/{id}修改指定学生
DELETE删除/students/{id}删除指定学生

这种设计的优点在于:

  • 语义清晰:通过 HTTP 方法就能判断操作类型
  • URL 简洁:路径只描述资源,不包含动作
  • 安全性较高:配合 HTTP 方法的语义约束
  • 跨平台通用:任何能发送 HTTP 请求的客户端都能调用

为什么选择JSON作为数据格式

在前后端分离架构中,后端返回的数据格式几乎都是 JSON。相比早期的 XML 格式,JSON 具有以下优势:

  • 简洁轻量:数据体积更小,传输效率更高
  • 跨语言支持:几乎所有编程语言都有完善的 JSON 解析库
  • 操作方便:前端 JavaScript 原生支持,后端 Python 也有内置模块

JSON(JavaScript Object Notation)由 Douglas Crockford 在 2001 年提出,其语法源自 JavaScript 对象字面量。相比 XML(eXtensible Markup Language),JSON 没有闭合标签的冗余开销——同样的数据,JSON 的体积通常只有 XML 的 30%-50%。例如表示一个学生信息,XML 需要 <name>张三</name>,而 JSON 只需 "name": "张三"。此外,JSON 的解析速度也显著快于 XML,因为 XML 需要构建 DOM 树进行解析,而 JSON 可以直接映射为编程语言中的字典/对象结构。Python 标准库中的 json 模块可以直接将 JSON 字符串转换为 dict,FastAPI 更是通过 Pydantic 模型实现了 JSON 数据的自动验证和类型转换。

目前 95% 以上的 Web 应用、移动 APP、桌面应用都采用 JSON 作为数据交换格式,XML 已经基本退出主流舞台。

总结

学习 FastAPI 之前,理解这些基础概念至关重要:

  1. 前后端分离是当前企业级开发的主流模式
  2. FastAPI 天生为后端 API 开发而设计
  3. RESTful 是最主流的 API 接口设计规范
  4. JSON 是数据交换的事实标准

掌握了这些概念,你就为后续深入学习 FastAPI 的路由、请求处理、数据验证等核心功能打下了坚实的基础。

#FastAPI入门#前后端分离#RESTful API#Python Web开发#后端API开发#JSON数据格式#FastAPI教程
分享:

相关推荐