2020.6.23

그린그레이프·2020년 6월 24일
0

graphQL strong and weak

strongs

  • no overfetching
  • easy communication btw back and front using well established schema

weaks

  • sequrity - 의도적으로 트리의 가장 하부까지 요구하는 쿼리를 지속해서 날리는 등의 공격에 취약 -> query 의 metadata 를 이용해서 이러한 쿼리를 차단할 수 있음.
  • caching - rest 와는 다르게 요구의 종류가 다양하므로 caching 이 곤란함.
  • N + 1 problem - 요구의 종류가 다양하고 서로 조합되는 엔드포인트가 다양하므로 N+1 문제가 발생할 가능성이 높음 -> dataLoader 의 per request batch and cache 로 문제 해결 가능

graphql fundamentals

operators

  • subscription
  • mutation
  • query

type

  • object
  • field
  • array

query 실행 과정

parse

  • parse query to abstract syntax tree(AST)

validation

  • validate AST over server schema

execution

  • walk through AST
  • invoke resolver
  • collect values
  • emit json

graphQL authentication

fundamental

  • context 에 user data 를 넣는다.

session based

  • session 공간 필요 -> in memory(express-session) or in-memory-db or external db(redis)
  • session id 를 위해 user 를 serialize 하기 위한 도구 필요
    -> passport or uuid

token based

  • user credential 을 이용하여 token 을 생성, 발급하는 도구 필요
  • token 을 재해석하여 user 정보를 이용하는 도구 필요
profile
제대로 걷는 한걸음이 곧 백걸음이다

0개의 댓글