FastAPI定义
FastAPI如字面意思就是快速API,我想快速提现在两方面,第一:访问API快速;第二:编写API快速。
官方定义:
FastAPI是一个现代、快速(高性能)的web框架,在Python 3.7及以上,基于标准Python类型提示构建API。
FastAPI特点
-
快速: 非常高的性能,与NodeJS和Go不相上下(感谢Starlette和Pydantic)。
最快的Python框架之一
。 -
快速编码: 将开发速度提高200%到300%。
-
更少bug: 减少大约40%的人为(开发人员)错误。
-
直观: 强大的编辑器支持。随时随地完成工作。较少的调试时间。
-
简单: 设计为易于使用和学习。大量减少文档阅读。
-
短: 尽量减少代码重复。每个参数声明的多个特性。更多减少错误。
-
健壮: 获得可用于生产的代码。具有自动交互文档
-
基于标准: 基于(并完全兼容)API的开放标准:OpenAPI(以前称为Swagger)和JSON Schema JSON Schema
FastAPI自带案例
from fastapi import FastAPI
app = FastAPI()
"""
1. 终端启动:
uvicorn 模块名:模块中的app名 -reload 默认是127.0.0.1:8000
例:uvicorn main:app --reload
2. 设置ip和端口:uvicorn 模块名:模块中的app名 -reload --host=ip地址 -port=端口号
例:uvicorn O1:app --reload --host=0.0.0.0 -port-8080
3. 在main函数中调用uvicor模块的.run()
uvicorn.run(app='FileDownload:app', host="127.0.0.1", port=8001, reload=False)
"""
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.get("/hello/{name}")
async def say_hello(name: str):
return {"message": f"Hello {name}"}
启动测试:
访问测试:
FastAPI下载文件案例
import uvicorn
from fastapi import FastAPI
from starlette.responses import FileResponse
"""
1. 终端启动:
uvicorn 模块名:模块中的app名 -reload 默认是127.0.0.1:8000
例:uvicorn FileDownload:app --reload
2. 设置ip和端口:uvicorn 模块名:模块中的app名 -reload --host=ip地址 -port=端口号
例:uvicorn FileDownload:app --reload --host=0.0.0.0 -port-8080
3. 在main函数中调用uvicor模块的.run()
uvicorn.run(app='FileDownload:app', host="127.0.0.1", port=8001, reload=False)
"""
app = FastAPI(name="FileDown") #构造FastAPI实例
"""
使用动态参数传递方式,实现根据指定名称下载指定文件
"""
@app.get("/filedown/{fileName}")
async def download(fileName:str):
# 处理完毕文件以后,生成了文件路径
filename = f"/Users/liyadong/data/pythondata/{fileName}"
return FileResponse(
filename, # 这里的文件名是你要发送的文件名
filename=f"{fileName}", # 这里的文件名是你要给用户展示的下载的文件名,比如我这里叫01.csv
)
"""
主函数,用于启动api服务;也可以通过终端方式启动;
启动成功后在浏览器地址栏请求url为:http://127.0.0.1:8001/filedown/2015.csv
"""
if __name__ == "__main__":
uvicorn.run(app='FileDownload:app', host="127.0.0.1", port=8001, reload=False)
启动测试:右键运行该模块即可。
访问测试(前提是指定目录下有对应的文件才可以下载
):