从这一章往后我们就正式开始学习 FastAPI 了
代码
FastAPI 环境安装
-
python 环境安装
根据要求至少需要 python 3.8及其以上,可以去 python 官网 自行下载安装,
本文中我们用 python 3.11 -
FastAPI 环境安装
pip install fastapi
pip install "uvicorn[standard]"
其中 pip install “uvicorn[standard]” 用于安装ASGI服务器 uvicorn库及其标准依赖项。
- Python IDE
这里我们选择 PyCharm ,下载后安装即可。没有专业版秘钥的可以下载 社区版本:PyCharm Community Edition
FastAPI 例子
首先我们先直观的感受一下,FastAPI 的使用:在 quickstart python package 下面创建 demo.py:
from fastapi import FastAPI
app = FastAPI()@app.get("/")
def root():return {"message": "Hello World"}@app.get("/hello/{name}")
def say_hello(name: str):return {"message": f"Hello {name}"}
其中 @app.get(xx)
为**路径操作装饰器,用来做映射用的
def xxx
为路径操作函数,**具体的业务逻辑在这里实现
在 PyCharm 终端执行执行
uvicorn quickstart.demo:app --reload
uvicorn quickstart.demo:app
命令含义如下:
quickstart.demo
:quickstart.demo.py
文件(一个 Python「模块」)。app
:在quickstart.demo.py
文件中通过app = FastAPI()
创建的对象。--reload
:让服务器在更新代码后重新启动。仅在开发时使用该选项。
然后就可以在浏览器中分别访问
- http://127.0.0.1:8000/ 返回
{"message":"Hello World"}
- http://127.0.0.1:8000/hello/xiaomin
{"message":"Hello xiaoming"}
至此 FastAPI 的例子就大功告成了,唯一不好的地方就是每次都需要通过命令行来操作,能否想普通的 python 程序一样,直接在 PyCharm 运行呢?
答案是可以的,直接添加 main 方法即可,如下:
from fastapi import FastAPI
app = FastAPI()@app.get("/")
def root():return {"message": "Hello World"}@app.get("/hello/{name}")
def say_hello(name: str):return {"message": f"Hello {name}"} if __name__ == "__main__":import uvicornuvicorn.run("quickstart.demo:app",reload=True,port=8001)
此处我们通过 port 改变其默认端口 8000 为 8001,旨在告诉大家有这样的一个功能
总结
如何从零构件一个 FastAPI 程序
-
导入
FastAPI
。 -
创建一个
app
实例。 -
编写一个路径操作装饰器(如
@app.get("/")
)。 -
编写一个路径操作函数(如上面的
def root(): ...
)。 -
运行开发服务器(如
uvicorn main:app --reload
)。
文档
作为一个后端或者 API 开发者,文档书写是一样特别麻烦的事情,特别是 API 修改需要及时修改文档。现在 FastAPI 内置了对文档的支持,后续写完代码就可以把文档的链接,直接丢给他人,省去了很多不必要的麻烦。
直接访问:http://127.0.0.1:8001/docs
![](https://img-blog.csdnimg.cn/direct/820681bc94454559860816138e37976c.png
同时可以直接通过 try it out 按钮直接请求响应的 API
还可以访问:http://127.0.0.1:8001/redoc,得到漂亮的 API 文档界面