GraphQL - Graphene: 6(Execution: Middleware)

Jihun Kim·2022년 4월 28일
0

GraphQL

목록 보기
13/16
post-thumbnail

Middleware

Middleware는 schema 내의 필드를 검사 하기 위해 사용할 수 있다.
어떤 객체, 함수든resolve(next_middleware, *args)에 응답할 수 있다면 middleware가 될 수 있다.


resolve(next_middleware, *args)

  • 다음 middleware가 검사를 계속 진행할 수 있도록 resolve를 전송한다.
  • 특정 value를 반환해 검사가 빨리 종료되도록 할 수도 있다.

Resolve arguments

resolve method는 4개의 인자를 받는다.

  • next
    - execution chain을 의미하며 검사를 계속 진행해야 하면 인자로 받은 next를 호출한다.
  • root
    - 쿼리 전체에 전달되는 root 값 객체이다.
  • info
    - resolver 정보를 나타낸다.
  • args
    - 필드에 전달되는 arguments의 dictionary 형태이다.

예시

class AuthorizationMiddleware(object):
    def resolve(self, next, root, info, **args):
        if info.field_name == 'user':
            return None
        return next(root, info, **args)
  • middleware는 field_name이 'user'일 때만 검사를 계속 진행하도록 한다.
    - 검사가 계속 진행될 때는 next가 호출된다.
  • middleware를 실행하려면 아래와 같이 사용하면 된다.
    - result = schema.execute('THE QUERY', middleware=[AuthorizationMiddleware()])
profile
쿄쿄

0개의 댓글