flask_smorest

文档地址:https://flask-smorest.readthedocs.io/en/latest/index.html

1. 这个包是干什么的

  • flask_smorest 原名 flask-rest-api, 是一个与数据库无关的用来创建 rest-api 的框架库
  • 使用flask做web服务, 使用marshallow来做序列化与反序列化, 该框架广泛依赖于 marshmallow, 使用 webargs 从request中获取请求数据,使用spispec来自动生成openapi规范文件

2. 使用

1. 安装

pip install flask_smorest

2. 基本使用
# main.py
from flask_smorest import Api, Blueprint as APIBlueprint
from flask import Flask

app = Flask(__name__)
api = Api(app)


# blp.py
from flask_smorest import  Blueprint as APIBlueprint
from flask.views import MethodView

blp = APIBlueprint("pets", __name__, url_prefix="/pets", description="Operations on pets")
@blp.route('/')
class Pet(MethodView):
    @blp.arguments(, location=)
    @blp.response()
    def get(args):
        ...
        return Pet().get_all(args)

ps: argument及response 装饰器用来装饰 类方法
ps2: argument 装饰器可以堆叠, 用来读取多个位置传入的数据

3. Arguments 参数解析

1.  : 基于marshmallow 的 反序列化和校验类
2. location: [json, query, path, form, headers, cookie, files], 默认 json, 选择读取的参数位置
3. as_kwargs: ,  默认false, 如果为true, 则会使用关键字参数传入函数, 默认用字典传入函数

4. Response 参数解析

1. : 基于marshmallow的序列化类, 如果是多条数据, 需要设置many=True
2. code: 默认200

5. Pagination 分页

@blp.route("/")
class Pets(MethodView):
    @blp.response(200, PetSchema(many=True))
    @blp.paginate()
    def get(self, pagination_parameters):
        pagination_parameters.item_count = Pet.size
        return Pet.get_elements(
            first_item=pagination_parameters.first_item,
            last_item=pagination_parameters.last_item,
        )

初步判断这是一种通过全部获取后 再进行分页的方式

你可能感兴趣的:(flask_smorest)