GraphQL- 환경설정 및 프로젝트 생성, GraphQL 기본, GraphQL 심화

Jiwontwopunch·2022년 6월 14일
0

독학

목록 보기
81/102
post-thumbnail
  • Facebook이 만든 쿼리 언어
  • 필요한 것을 구체적으로 요청
  • 단일 요청으로 많은 데이터를 얻는다
  • 타입과 필드
  • 강력한 개발자 도구
  • 쿼리언어? SQL(구조화된 질의어)
  • RDBMS(관계형 데이터베이스 관리 시스템)의 데이터 관리를 위해 설계된 언어
  • DB로부터 데이터를 효율적으로 가져오기 위해 클라이언트가 필요한 리소스를 요청한다
  • 단일 엔드포인트, GraphQL 스키마에 따라 데이터가 다르다
  • 하나의 쿼리가 여러 resolver를 호출하여 여러 리소스가 포함된 중첩 응답 구성

환경설정 및 프로젝트 생성

라이브러리가 아닌 언어 혹은 명세
다뤄보려면 구현체가 필요하다

public GraphQL apis

https://moonhighway.com/public-graphql-apis
https://graphql.org/swapi-graphql
Star wars(swapi) clone해서 로컬에
https://github.com/graphql/swapi-graphql
스키마 Introspection
https://graphql.org/learn/introspection/
다양한 도구들 graphql graphql express... 등

GraphQL 기본

쿼리는 요청,결과동일/ 주석/ 작업(타입,이름), 필드 객체 참조, 인자, 별칭
Fragment 반복되는 필드셋/ 변수 전달 가능
변수/ 지시어 동적쿼리 방법 @include @skip

쿼리&뮤테이션

https://graphql.org/learn/queries
https://grapql-kr.github.io/learn/queries

뮤테이션 예시

뮤테이션은 데이터를 바꾸기 때문에 제공하는 example을 찾아야함
Apollo graphql 다양한 기능이 추가된 라이브러리
뮤테이션 다중 필드 순차 실행(쿼리는 병렬)
Apollo graphql studio 좀 더 편리한 기능들을 준다.
query Query{users{id name timestamp}}
인라인 프래그먼트는 interface/ union일 때 사용
스키마 대부분의 타입은 일반 객체 타입
인터페이스는 특정 필드들을 포함하는 추상 타입
해당 인터페이스를 구현한 타입들이 가져야 할 필드 정의
Inline Fragments가 Interface나 Union 타입에서 쓰인다고 했었음
스칼라 타입은 구체적 데이터

GraphQL 심화

https://www.apollographql.com/docs/ 보면 각종 클라이언트와 서버를 제공

graphQL Server 세팅

$ npm install apollo-server graphql nodemon

서버 & 프론트엔드 튜토리얼

https://www.apollographql.com/docs/tutorial/introduction/
https://github.com/apollographql/fullstack-tutorial

스키마 생성

스키마는 프론트와 쉐어할 데이터 구조
https://www.apollographql.com/docs/tutorial/schema/
studio에 http://localhost:4000로 다시 세팅

데이터 소스 연결(REST API)

https://www.apollographql.com/docs/tutorial/data-source/

캐싱

https://www.apollographql.com/blog/backend/easy-and-performant-graphql-over-rest-e02796993b2b/

데이터 소스 연결(Object Relational Mapping DB와 데이터를 매핑해주는 도구)

Sequelize
https://sequelize.org/
https://github.com/sequelize/sequelize

리졸버는 쿼리 요청에 대한 응답을 생성

https://www.apollographql.com/docs/tutorial/resolvers/
Data나 Promise를 반환(parent, args, context, info)
페이지네이션은 서버 부하를 줄인다
페이지네이션 fetchMore/ 캐시 InMemoryCache

기본 리졸버

https://https://www.apollographql.com/docs/tutorial/resolvers/#define-other-resolvers
missionPatch(size:SMALL)
뮤테이션 리졸버는 로그인/예약
SQLite 데이터 추적됨

프론트엔드를 GraphQL 서버와 연결

https://https://www.apollographql.com/docs/tutorial/client/

뮤테이션(로그인)

https://https://www.apollographql.com/docs/tutorial/mutations/

useMutation 뮤테이션

https://https://www.apollographql.com/docs/tutorial/mutations/#apply-the-usemutation-hook

makeVar client 로컬 상태 관리

https://https://www.apollographql.com/docs/tutorial/local-state/
로그인까지만..

0개의 댓글