【flask框架】——flask-restful风格

首先,安装依赖包。帮助文档:中文文档官方文档

pip install flask-restful

1、基本使用

注意:类视图return返回的数据为字典,底层会通过from flask_restful import output_json会自动将字典封装成json对象返回。

# 在restful风格中想返回中文,需要取消ascii编码的配置
app.config["RESTFUL_JSON"] = {"ensure_ascii": False}


# 1、创建组件对象
组件对象 = Api(app)

# 2、定义类视图
class 自定义视图类(Resource):

# 3、组件添加类视图
组件对象.add_resource(视图类, URL资源段)

1.2、类视图的装饰器使用

class DemoResource(Resource):
    # 方案1:给视图类中所有方法添加装饰器
    # decorator1先调用,但是后执行
    # method_decorators = [mydecorator1, mydecorator2]

    # 方案2:给指定函数添加指定的装饰器
    method_decorators = {
        "get": [mydecorator1, mydecorator2],
        "post": [mydecorator2]

    }

    def get(self):
        return {"get": "get message"}

    def post(self):
        return {"post": "post body"}

1.3、请求参数的提取

location="请求对象的属性" 
  • 属性可以是:args(查询字符串) formjsonfilescookiesheaders
  • 是否必须传递,默认False,如果设置为True, 不传递会返回400

# 2.定义类视图
class DemoResource(Resource):

    def get(self):
        # 1.创建解析对象
        parser = RequestParser()

        # 2.添加解析参数和规则
        # location="请求对象的属性"  args form json files cookies headers
        # required: 默认False, 如果设置为True, 不传递会返回400
        parser.add_argument("name", required=True, location='json', type=regex(r'^1[3-9]\d{9}$'))

        # 3.开始解析,获取解析结果
        ret = parser.parse_args()

        # 4.从解析结果中提取参数值
        name = ret.name
        # name = ret['name']

        return {'foo': 'get'}

1.4 序列化响应返回

方案一:marshal函数 来完成序列化处理

# 序列化规则
# 拓展:Nested:可转换 字典类型属性
user_dict = {
    'name': fields.String,
    'age': fields.Integer(default=18),
    'height': fields.Float,
    'list1': fields.List(fields.Integer),
    'dict1': {'gender': fields.Boolean}
}

# 2.定义类视图  继承Resource
class DemoResource(Resource):

    def get(self):
        # 创建模型对象
        user = Person()
        # 参数1:模型对象
        # 参数2:序列化规则字典
        return marshal(user, user_dict)

方案二:使用装饰器marshal_with(序列化规则字典)

    method_decorators = {
        "get": [marshal_with(user_dict)]
    }

方案三:自定义将模型类对象转换成字典的方法【推荐使用

    def to_dict(self):
        """
        将模型对象转换成字典
        :return:
        """
        my_dict = {
            "name": self.name,
            "age": self.age,
            "height": self.height,
            "mylist": self.mylist,
            "mydict": self.mydict,
        }

        return my_dict

1.5 自定义json的响应格式

flask-restful 提供了api.representation()装饰器方法, 允许开发者自定义返回的数据格式

1、重写flask_restful里面的output_json方法(增加需要定义的响应格式),封装在一个工具文件里,方便以后调用。

在这里插入图片描述
2、使用
在这里插入图片描述
3、结果
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值