본문 바로가기

graphQL4

GraphQL best practice Gzip GraphQL 서비스는 일반적으로 JSON으로 응답하지만 GraphQL 명세에서는 필수는 아니다. JSON은 더 좋은 네트워크 성능을 보장하는 API 레이어를 위해서는 이상한 선택처럼 보일 수 있지만 대부분 텍스트이기 때문에 GZIP으로 매우 잘 압축된다. 모든 프로덕션 GraphQL 서비스는 GZIP을 활성화하고 클라이언트가 다음 헤더를 보내는것을 권장한다. Accept-Encoding: gzip 버저닝 API 엔드포인트에서 리턴된 데이터에 대한 변경이 있을 때 모든 변경은 큰 변화를 일으킬 수 있으며, 큰 변경사항에는 새 버전이 필요하다. GraphQL은 명시적으로 요청된 데이터만 반환하므로 새로운 타입과 필드를 통해 새로운 기능을 추가할 수 있고, 버저닝에서 큰 강점을 갖는다. HTTP M.. 2021. 6. 24.
GraphQL 스카마 & 타입 스키마 & 타입 타입 시스템 GraphQL 쿼리 언어는 기본적으로 객체의 필드를 선택한다. { hero { name appearsIn } } { "data": { "hero": { "name": "R2-D2", "appearsIn": [ "NEWHOPE", "EMPIRE", "JEDI" ] } } } root 객체로 시작한다. hero 필드를 선택한다. hero 에 의해 반환된 객체에 대해 name 과 appearIn 필드를 선택한다. GraphQL 쿼리의 형태가 결과와 거의 일치하기 때문에 서버에 대해 모르는 상태에서 쿼리가 반환할 결과를 예측할 수 있다. 하지만 서버에 요청할 수 있는 데이터에 대한 정확한 표현을 갖는 것이 좋다. 어떤 필드를 선택할 수 있는지, 어떤 종류의 객체를 반환할 수 있는지,.. 2021. 6. 24.
GraphQL 쿼리, 뮤테이션 GraphQL 서비스가 실행되면 (일반적으로는 웹 서비스의 URL) GraphQL 쿼리를 전송하여 유효성을 검사하고 실행한다. 수신된 쿼리는 먼저 정의된 타입과 필드만 참조하도록 검사한 다음, 함수를 실행하여 결과를 생성한다. { me { name } } 위 쿼리문을 보내면 아래와 같은 JSON을 얻을 수 있다. { "me": { "name": "Luke Skywalker" } } 쿼리 & 뮤테이션 필드 GraphQL은 객체에 대한 특정 필드를 요청하는 것이 무척 간단하다. 쿼리와 결과가 정확히 동일한 형태이다. 이것이 GraphQL의 핵심이다. 항상 기대한 결과를 얻을 수 있다. 서버에서 클라이언트가 요청하는 필드를 정확히 알고 있기 때문이다. GraphQL 쿼리는 연관된 객체와 필드를 탐색할 수 있어.. 2021. 6. 24.
GraphQL 간단 소개 GraphQL은 API용 쿼리 언어이며, 기존 데이터로 이러한 쿼리를 수행하기위한 런타임이다. GraphQL 쿼리를 API에 보내고 필요한 것을 정확히 얻을 수 있다. GraphQL 쿼리는 항상 예측 가능한 결과를 반환한다. GraphQL을 사용하는 앱은 서버가 아닌 가져오는 데이터를 제어하기 때문에 빠르고 안정적이다. 단일 요청으로 많은 리소스 얻기 일반적인 REST API는 여러 URL에서 로드해야하지만, GraphQL API는 단일 요청으로 앱에 필요한 모든 데이터를 가져올 수 있다. 따라서, GraphQL을 사용하는 앱은 느린 모바일 네트워크 연결에서도 빠를 수 있다. Type 시스템으로 가능한 type에 대해 명시할 수 있다. GraphQL API는 엔드 포인트가 아닌 유형과 필드로 구성된다. .. 2021. 6. 24.