2020-11-30 20:37:06 +08:00
|
|
|
|
## 用FastAPI开发网络数据接口
|
|
|
|
|
|
|
|
|
|
FastAPI 是一个用于构建API(网络数据接口)的现代、高性能的Web框架,基于Python 3.6+,使用了Python中的类型提示进行类型检查,非常符合工程化开发的需求,在业界有非常好的口碑。下面,我们先用代码告诉大家FastAPI到底能做什么,然后再来讲解它的方方面面。
|
|
|
|
|
|
|
|
|
|
### FastAPI五分钟上手
|
|
|
|
|
|
|
|
|
|
1. 安装依赖库和ASGI服务器(支持异步I/O的Python服务器)。
|
|
|
|
|
|
|
|
|
|
```Bash
|
|
|
|
|
pip install fastapi
|
|
|
|
|
pip install uvicorn
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. 编写代码`main.py`。
|
|
|
|
|
|
|
|
|
|
```Python
|
|
|
|
|
from fastapi import FastAPI
|
|
|
|
|
|
|
|
|
|
app = FastAPI()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.get('/')
|
|
|
|
|
def say_hello():
|
|
|
|
|
return {'code': 200, 'message': 'hello, world!'}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3. 运行服务。
|
|
|
|
|
|
|
|
|
|
```Bash
|
|
|
|
|
uvicorn main:app --reload
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
> **说明**:上面运行uvicorn时使用的`--reload`参数会在代码发生变更时自动重新加载新的内容,这个参数在开发阶段非常的有用。
|
|
|
|
|
|
|
|
|
|
4. 访问服务。
|
|
|
|
|
|
|
|
|
|
![](res/run-first-demo.png)
|
|
|
|
|
|
|
|
|
|
5. 查看文档。
|
|
|
|
|
|
|
|
|
|
![](res/first-demo-docs.png)
|
|
|
|
|
|
|
|
|
|
> **注意**:FastAPI会基于[Swagger UI](https://swagger.io/tools/swagger-ui/)自动为数据接口生成对应的文档。
|
|
|
|
|
|
|
|
|
|
### 请求和响应
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 接入关系型数据库
|
|
|
|
|
|
|
|
|
|
我们可以使用SQLAlchemy三方库来实现对关系型数据库的接入。SQLAlchemy是一个ORM(对象关系映射)框架,ORM框架可以解决Python程序的面向对象模型和关系型数据库的关系模型并不匹配的问题,使得我们可以用面向对象的方式实现数据的CRUD操作。
|
|
|
|
|
|
|
|
|
|
### 依赖注入
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 中间件
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 异步化
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 虚拟化部署(Docker)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 项目实战:车辆违章查询
|
2020-09-24 07:36:20 +08:00
|
|
|
|
|