본문 바로가기

백앤드 프로그래밍

[GraphQL] 3. GraphQL에서의 인증 // Authentication in GraphQL 1. GraphQL에서의 인증 방식GraphQL은 플랫폼 독립적이고 기존의 REST API와는 완전히 다르기 때문에 GraphQL에서의 인증은 큰 문제라고 생각할수도 있지만 인증은 그렇게 어렵지 않다. 기존의 JWT(Json Web Token)을 충분히 이용 가능하다JWT 토큰을 전달하는 위치가 헤더에서 쿼리나 뮤테이션의 인자로 바뀌었을 뿐이다. 우리가 GraphQL 서버를 만들떄 사용하는 Flask와 Graphene에서 인증을 처리하는 것도 기존 .. 더보기
[GraphQL] 2. Graphene에 MongoDB(MongoEngine) 연동하기 // MongoDB and Graphene MongoEngine과 Graphene 우리가 만든 GraphQL 서버에 DB를 연결해 보자. 기본적으로 웹 서버는 클라이언트의 요청을 따라 DB를 조회하거나 삭제, 수정, 추가를 한다. 우리의 GraphQL 서버도 쿼리가 들어오면 쿼리에 맞추어 DB를 조회하고, 뮤테이션 요청이 들어오면 DB에 항목을 추가, 수정하거나 삭제한다.graphene에 쿼리 요청이 들어온다면 graphene은 그 요청을 받아서 resolver에서 요청된 조건대로 DB에 .. 더보기
[GraphQL] 1. 파이썬과 플라스크로 기본적인 GraphQL 서버 만들어보기 // GraphQL with Flask(Python) GraphQL 시스템 알아보기 GraphQL 서버를 만들려면 GraphQL API를 구성하는 요소들에 대해 알아볼 필요가 있다. GraphQL API는 다음의 요소로 이루어진다. 스키마: DB 스키마가 테이블과 릴레이션을 정의하는 것처럼 GraphQL 스키마는 뮤테이션, 쿼리, 타입과 Enum 등 GraphQL 시스템을 정의한다. 쿼리: CRUD의 Read를 담당하는 부분이다 필드: 쿼리의 속성, DB의 테이블 역할을 수행하고 반환값을 결정한다... 더보기
[GraphQL] 0. 왜 GraphQL을 쓸까? // Why GraphQL? 현재 수많은 웹 서비스와 API들은 REST API를 사용하여 클라이언트-서버 간 통신을 수행한다. 물론 REST API는 좋은 방식이지만 다음과 같은 문제점이 생긴다. 첫번째, 수많은 양의 엔드포인트들 두번째, 데이터가 원한것보다 너무 많음 세번째, 여러가지 데이터를 사용하기 위해 요청을 여러번 해서 데이터를 받아와야 함 (N+1 문제) 네번쨰, 응답 데이터의 구조를 API 도큐멘트 없이 알 수 없다. 그러나 ✨GraphQL✨이란게 있다! Gra.. 더보기
[JWT] 토큰 기반 인증과 JSON Web Token 토큰 기반 인증이란? 기존의 세션 기반 인증과는 다르게 서버가 사인한 토큰을 이용하여 인증을 수행하는 방식이다. 기존의 세션 기반 인증은 세션을 유지하면서 세션을 DB에 저장한다면 DB 쿼리가 발생하고, 메모리에 저장한다면 메모리가 부족해 질 수 있는 등 서버에 부하가 발생할 가능성이 높지만 토큰 기반 인증은 서버가 전달받은 토큰을 검증만 하면 되기 때문에 stateless 하게 서버의 상태를 유지시켜 서버의 부담을 줄여주고 서비스의 확장성을 높일 .. 더보기