Development

GraphQL

젤리젤리젤리젤리젤리 2023. 6. 10. 14:16
반응형

https://hahahoho5915.tistory.com/63


MSA 아키텍처가 인기를 끌고 있고, MSA의 근간이 되는 REST API를 방식으로 지원하는 GraphQL 도입을 하는 경우가 늘고 있다. REST API + ORM + GraphQL를 통해서 생산성을 높이기 위한 노력이 증가하고 있다.

GraphQL은 2015년에 페이스북 개발자들이 모바일 어플리케이션을 제작하면서 개발되어 공개된 오픈 소스 쿼리 언어 및 런타임입니다. GraphQL은 기존의 RESTful API에 비해 데이터를 검색하고 조작하는 효율적이고 유연한 방법을 제공합니다.

GraphQL을 사용하면 클라이언트는 API에서 필요한 정확한 데이터를 지정할 수 있으며, 서버는 해당 데이터만 응답합니다. 이는 REST API에서 서버가 정의한 고정된 엔드포인트와 데이터 구조로 인해 발생하는 데이터의 과다 또는 부족한 문제를 해결합니다.

GraphQL의 몇 가지 주요 개념은 다음과 같습니다:

1. 스키마(Schema): GraphQL 스키마는 쿼리할 수 있는 데이터 유형과 그들 간의 관계를 정의합니다. 이는 클라이언트와 서버 간의 계약 역할을 하며, 양측이 교환되는 데이터를 이해할 수 있도록 합니다.

2. 쿼리(Query): 클라이언트는 서버에게 특정 데이터를 요청하기 위해 쿼리를 전송할 수 있습니다. 쿼리의 구조는 필요한 데이터의 구조와 일치하여 클라이언트가 한 번의 요청으로 관련 데이터를 가져올 수 있게 합니다.

3. 뮤테이션(Mutation): GraphQL은 데이터를 수정하기 위해 뮤테이션을 지원합니다. 뮤테이션을 사용하면 클라이언트가 유사한 구문을 사용하여 데이터를 생성, 업데이트 또는 삭제할 수 있습니다.

4. 리졸버(Resolver): 리졸버는 쿼리나 뮤테이션에서 요청한 데이터를 가져오거나 해결하는 역할을 하는 함수입니다. 리졸버는 서버 측에 정의되며, 스키마에서 지정한 필드와 매핑됩니다.

5. 구독(Subscriptions): GraphQL은 구독을 통해 실시간 업데이트도 지원합니다. 클라이언트는 특정 이벤트나 데이터 변경에 대해 구독할 수 있으며, 서버는 구독된 클라이언트에게 업데이트를 푸시합니다.


예제 사용법
- 단순 쿼리    
    - GraphQL Query    

    {
    	user(id: "100") {
    		name,
    		email
    }

    
    - The result data    

    {
     "user": {
     "id": "100",
     "name": "John Doe",
     "email": "john@gamil.com"
    }

    
- 여러 리소스 반환 쿼리    
    - GraphQL Query    

    {
     user(id: "100") {
     name,
     email,
     posts {
     title
     }
    }


    - The result data    

    {
     "user": {
     "id": "100",
     "name": "John Doe",
     "email": "john@gamil.com",
     "posts": [
     {"title": "Post 1"},
     {"title": "Post 2"}
     ]
    }


GraphQL은 유연성, 효율성 및 선언적인 특성으로 인해 인기를 얻고 있습니다. 클라이언트는 다양한 소스에서 데이터를 집계할 수 있으며, 과다한 데이터 요청을 피함으로써 네트워크 오버헤드를 줄이고, 강한 타입 지정 및 내부 검사를 가능하게 합니다.

GraphQL을 구현하기 위해 Apollo, Relay, graphql-js 등과 같은 다양한 라이브러리와 프레임워크를 사용할 수 있습니다. 이러한 도구들은 GraphQL 서버와 클라이언트를 효율적으로 구축하는 데 필요한 구성 요소를 제공합니다.


참조
ChatGPT
https://blog.codefactory.ai/prisma/deploy-prisma-in-five-minutes/
https://hwasurr.io/api/graphql-example/

반응형

'Development' 카테고리의 다른 글

IT 프로덕트(솔류션) 개발 단계  (2) 2023.06.13
객체 지향 패러다임  (0) 2023.06.12
CI/CD란 무엇인가?  (0) 2023.06.02
API란 무엇인가?  (0) 2023.06.01
MSA 아키텍처  (0) 2023.05.31