当前位置: 首页 > 工具软件 > Graphene > 使用案例 >

python中间件的作用_graphene-python学习笔记(12)中间件

欧阳博文
2023-12-01

中间件会影响schema中字段的计算

中间件next_middleware是一个对象或者方法:resolve(next_middleware, *args)

中间件的作用:

(1)发送给resolve一个中间件继续计算

(2)结束计算

中间件resolve的四个参数:

next代表执行链。致电next继续评估。

root是在整个查询中传递的根值对象。

info是解析器信息。

args是传递给该字段的参数。

对象中间件示例:

class AuthorizationMiddleware(object):

def resolve(self, next, root, info, **args):

if info.field_name == 'user':

return None

return next(root, info, **args)

使用中间件

result = schema.execute('THE QUERY', middleware=[AuthorizationMiddleware()])

函数中间件示例:

from time import time as timer

def timing_middleware(next, root, info, **args):

start = timer()

return_value = next(root, info, **args)

duration = timer() - start

logger.debug("{parent_type}.{field_name}: {duration} ms".format(

parent_type=root._meta.name if root and hasattr(root, '_meta') else '',

field_name=info.field_name,

duration=round(duration * 1000, 2)

))

return return_value

中间件类似于一个装饰器。为resolve增加新的功能。

 类似资料: