flask-restful-装饰器理解

装饰器

使用method_decorators添加装饰器

为类视图中的所有方法添加装饰器


  def decorator1(func):
      def wrapper(*args, **kwargs):
          print('decorator1')
          return func(*args, **kwargs)
      return wrapper


  def decorator2(func):
      def wrapper(*args, **kwargs):
          print('decorator2')
          return func(*args, **kwargs)
      return wrapper


  class DemoResource(Resource):
      method_decorators = [decorator1, decorator2]

      def get(self):
          return {'msg': 'get view'}

      def post(self):
          return {'msg': 'post view'}
为类视图中不同的方法添加不同的装饰器
  class DemoResource(Resource):
      method_decorators = {
          'get': [decorator1, decorator2],
          'post': [decorator1]
      }

      # 使用了decorator1 decorator2两个装饰器
      def get(self):
          return {'msg': 'get view'}

      # 使用了decorator1 装饰器
      def post(self):
          return {'msg': 'post view'}

      # 未使用装饰器
      def put(self):
          return {'msg': 'put view'}

代码理解原理

class DemoResource(Resource):
    method_decorators = [decorator1, decorator2]

    # for dec in method_decorators:
    #      func = dec(fuc)
    #
    #   get = decorator1(get)
    #   get = decorator2(get)
    # @decorator2
    # @decorator1
    # def get
    

总结: 装饰器执行顺序是从后至前开始的

上一篇:RESTful风格


下一篇:restful api