11 - 使用FastAPI开发Web应用
FastAPI基于Starlette和Pydantic,支持异步编程,自动生成API文档,开发效率高。安装需Python3.8+,通过uvicorn启动服务。示例演示了创建简单API的流程,访问根路径返回JSON响应。建议Python专注后端开发,通过RESTful API提供AI服务,前端使用Vue/React等框架。
Python Web 框架的使用率仍然是 Flask、Django 和 FastAPI 之间的三强之争。所有其他框架加起来只能勉强排在第三位。下面对这三个主流框架做下比较:
Djanggo- 使用比率: 39%
- 系统特点:全栈框架:内置 ORM、模板引擎、表单处理、用户认证等功能;开箱即用:适合快速开发复杂的 Web 应用;社区强大:有丰富的第三方库和插件。
- 系统性能:中等。由于功能丰富,性能略低于轻量级框架,但足够应对大多数场景。
- 适用场景:需要快速开发的全栈应用如内容管理系统(CMS)、社交网络、电子商务网站等。
Flask- 使用比率:36%
- 系统特点:微框架:轻量级,核心功能简单,易于扩展;灵活:可以根据需求选择插件和库;学习曲线低:适合初学者和小型项目。
- 系统性能:较高:由于轻量级设计,性能优于 Django。
- 适用场景:小型 Web 应用、API 服务、原型开发。
FastAPI- 使用比率:25%
- 系统特点:高性能:基于 Starlette 和 Pydantic,性能接近 Node.js 和 Go;异步支持:原生支持异步编程;自动文档:自动生成 OpenAPI 和 Swagger 文档。
- 系统性能:极高:是目前性能最好的 Python Web 框架之一。
- 适用场景:高性能 API 服务、微服务、实时应用。
目前纯粹的前端框架有很多如 vue、angular、React 等,笔者不建议使用Python做web界面开发,可以使用Python开发人工智能后端后通过 restful API 发布接口,供第三方应用调用即可。
下面逐个介绍这几个框架并提供简单的web开发应用,只做抛砖引玉的作用,不做详细的引申,感兴趣的同学可以针对自己感兴趣的框架做进一步的学习。最后我们来了解 FastAPI。
在现代 Web 开发中,API 是前后端分离架构的核心。FastAPI 凭借其高性能、简洁的语法和自动文档生成功能,成为 Python 开发者的首选框架。FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.8+ 并基于标准的 Python 类型提示。
核心特点
- 基于 Starlette 和 Pydantic:提供异步支持和严格的数据验证。
- 自动生成 API 文档:内置 Swagger UI 和 ReDoc,开发者无需手动维护文档。
- 类型提示(Type Hints):利用 Python 的类型系统实现输入参数验证和代码提示。
- 高效编码:提高功能开发速度约 200% 至 300%。
- 更少 bug:减少约 40% 的人为(开发者)导致错误。
- 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
- 简单:设计的易于使用和学习,阅读文档的时间更短。
- 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。
- 健壮:生产可用级别的代码。还有自动生成的交互式文档。
- 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为
Swagger) 和 JSON Schema。
技术优势
| 特性 | 说明 |
|---|---|
| 高性能 | 异步处理能力(ASGI)支持高并发,性能媲美 Node.js 和 Go。 |
| 开发效率高 | 通过类型提示和自动文档生成,减少代码冗余和调试时间。 |
| 生态完善 | 可无缝集成 SQLAlchemy、OAuth2、JWT 等常用库。 |
依赖安装
主意!
fastapi有版本要求,需要的
Python版本至少是Python 3.8
安装fastapi
# 使用pip安装
pip install fastapi
安装ASGI服务器
ASGI是异步网关协议接口,一个介于网络协议服务和 Python 应用之间的标准接口,能够处理多种通用的协议类型,包括 HTTP,HTTP2和 WebSocket。
pip install uvicorn[standard]
Uvicorn是一个基于ASGI(Asynchronous Server Gateway Interface)的异步Web服务器,用于运行异步Python web应用程序。它是由编写FastAPI框架的开发者设计的,旨在提供高性能和低延迟的Web服务;
开发第一个应用
首先,使用Python包管理工具如proptry或者uv创建一个新的工程:python-demo。
第一个文件
在新建的工程目录下新建一个python文件:main.py。如果创建工程时已经生成,则打开即可。
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
启动服务
# 在Terminal中输入:
# 语法:uvicorn 文件的相对路径:实例名 --reload
# reload:表示热启动,后端代码改变时,前端页面也会随之改变
PS:>uvicorn main:app --reload
INFO: Will watch for changes in these directories: ['E:\\test\\project\\fastapi']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [19856] using statreload
INFO: Started server process [7500]
INFO: Waiting for application startup.
INFO: Application startup complete.
启动成功后,打开浏览器,输入:http://127.0.0.1:8000/,即可看到输入的信息:
{"message": "Hello World"}
更多推荐


所有评论(0)