FastApi

官方文档: https://fastapi.tiangolo.com/

1、安装第三方库老生常谈了,使用 pip 或者 pipenv 即可安装 FastApi:

pip install fastapi
pipenv install fastapi

2、安装后,来创建我们的第一个 API:

from fastapi import FastAPI

app = FastAPI()


@app.get('/')
def index():
    return {'message': '你已经正确创建 FastApi 服务!'}

这里的写法跟 Flask 几乎一致。只不过在 Flask 中,我们定义路由的装饰器为 @app.route('/')。而这里写为 @app.get('/')

写好代码以后,使用uvicorn来运行 FastApi。首先使用pip或者pipenv安装uvicorn:

pip install uvicorn
pipenv install uvicorn

然后执行命令:

uvicorn main:app --reload

其中main表示我们的代码文件为main.py,app表示我们初始化的 FastApi 对象的名字。--reload参数表示在修改了代码以后立即生效,不需要重启。

运行后,访问 http://127.0.0.1:8000 可以看到接口已经正确返回了 JSON 格式的数据。

3、定义一个带参数的 GET 方法:

@app.get('/query/{uid}')
def query(uid):
    msg = f'你查询的 uid 为:{uid}'
    return {'success': True, 'msg': msg}

如果想限定 uid 只能是数字,不能是字符串怎么办呢?你只需要多加 4 个字符:

@app.get('/query/{uid}')
def query(uid: int):
    msg = f'你查询的 uid 为:{uid}'
    return {'success': True, 'msg': msg}

4、定义一个资源的 POST 方法。

在使用 Flask 的时候,我们需要手动验证用户 POST 提交上来的数据是什么格式的,字段对不对。

但使用 FastApi 的时候,我们只需要类型标注就能解决所有问题。首先我们导入 from pydantic import BaseModel ,然后继承BaseModel实现我们允许 POST 方法提交上来的数据字段和格式:

from pydantic import BaseModel

app = FastAPI()


class People(BaseModel):
    name: str
    age: int
    address: str
    salary: float

People这个类通过类型标注,指定了它里面的 4 个字段和他们的类型。现在来实现 POST 方法:

@app.post('/insert')
def insert(people: People):
    age_after_10_years = people.age + 10
    msg = f'这个人的名字是:{people.name},十年后,此人年龄:{age_after_10_years}'
    return {'success': True, 'msg': msg}

insert函数的参数people通过类型标注指定为People类型。

当我们使用 POST 方式提交数据时,FastApi 自动会以People中定义的字段为基准来校验数据,发现不对就返回报错信息。

另外,FastApi 会自动帮我们生成接口文档,访问http://127.0.0.1:8000/docs,看到接口文档已经生成好了。

参考—— https://mp.weixin.qq.com/s/42-jEWAXgCswEXx-AKMD2g

原文地址:https://www.cnblogs.com/lovebkj/p/12744664.html