1.FastAPI框架介绍
FastAPI是⼀个现代、快速(⾼性能)的Web框架,⽤于构建API。是建⽴在Starlette和Pydantic基础上的。它基于Python3.7+的类型提示(typehints)和异步编程(asyncio)能⼒,使得代码易于编写、阅读和维护。FastAPI具有⾃动交互式⽂档(基于OpenAPI规范和JSONSchema)、数据验证、依赖注⼊(DependencyInjection)等功能,这些功能使得API的开发速度更快、更可靠。FastAPI还⽀持WebSocket,可以轻松地扩展到更复杂的应⽤场景。
2.为什么要⽤FastAPI
(1)强⼤的性能
FastAPI使⽤Pydantic和Starlette等现代Python库,可以实现⽐Flask和Django等传统框架更快的性能。FastAPI的异步⽀持使其能够处理⼤量并发请求,并在⾼负载下保持稳定的性能。
(2)自动生成API⽂档
FastAPI可以⾃动⽣成API⽂档,这是⼀个重要的优势。FastAPI使⽤OpenAPI标准,可以通过SwaggerUI或Redoc⾃动⽣成交互式API⽂档。这使得API的使⽤和测试更加容易和直观。
(3)类型提示和自动验证
FastAPI使⽤Python的类型注解和Pydantic库来⾃动验证请求和响应的数据。这使得代码更加清晰和易于维护,并可以在运⾏时⾃动检查数据类型和格式。这也可以帮助开发⼈员更早地发现和解决错误。
(4)快速开发
FastAPI提供了⼀些快速开发的功能,如⾃动路由和依赖注⼊。这使得开发⼈员可以更快地编写API,并且可以更容易地管理和维护代码。FastAPI还提供了⼀些常⻅的功能,如⾝份验证和数据库集成,以便开发⼈员可以更快地构建功能完整的API。
(5)强⼤的交互式API⽂档
FastAPI的交互式API⽂档不仅可以⾃动⽣成,⽽且还⾮常强⼤。开发⼈员可以在⽂档中执⾏请求和测试,以便更好地理解API的使⽤和⾏为。⽂档还提供了⼀些有⽤的⼯具,如请求和响应模型的可视化和⾃动代码⽣成。这使得API的使⽤和测试更加容易和直观。
3.第一个FastAPI程序
3.1 Python虚拟环境搭建
(1)安装Python解释器
官网下载:https://www.python.org/downloads/
(2)安装虚拟环境库
在cmd中输⼊:
pip install virtualenv
3.创建虚拟环境
在cmd中切换到需要创建虚拟环境的⽬录下,执⾏:
virtualenv env_name
4.激活虚拟环境
在cmd中进⼊到第三步创建的env_name/Scripts
⽬录下,执⾏:
activate
执⾏成功后,在cmd中,当前输⼊⾏前⾯会有(env_name)的前缀在当前状态下,使⽤pip就是在虚拟环境中安装第三⽅库了。
5.退出虚拟环境
deactivate
6.查看虚拟环境
workon
7.进入虚拟环境
workon 虚拟环境名称
8.删除虚拟环境rmvirtualenv
rmvirtualenv 虚拟环境名称
3.2 安装FastAPI
(1)安装所有的可选依赖及对应功能,包括了 uvicorn ,可以将其⽤作运⾏代码的服务器。
pip install fastapi[all] -ihttps://mirrors.aliyun.com/pypi/simple/
(2)也可以分开来安装
假如想将应⽤程序部署到⽣产环境,可能要执⾏以下操作:
pip install fastapi
并且安装 uvicorn
来作为服务器:
pip install "uvicorn[standard]"
3.3 创建项⽬
选择虚拟环境下的Python解释器创建fastApi项目
创建好的项目包含一个main.py文件
main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.get("/hello/{name}")
async def say_hello(name: str):
return {"message": f"Hello {name}"}
3.4 启动项目
(1)通过pycharm
启动按钮(开发模式)
浏览器输入:127.0.0.1:8000
(2)uvicorn命令启动(⽣产模式)
uvicorn main:app --reload
命令含义如下:
• main : main.py ⽂件(⼀个Python「模块」)。
• app :在 main.py ⽂件中通过 app = FastAPI()
创建的对象。
• --reload :让服务器在更新代码后重新启动。仅在开发时使⽤该选项。
(3)在main.py中定义main函数
if __name__ == '__main__':
import uvicorn
uvicorn.run(app, host='127.0.0.1', port=8000)
3.5 访问接口文档
http://127.0.0.1:8000/docs