GraphQL - HTTP

Jihun Kim·2022년 4월 23일
0

GraphQL

목록 보기
7/16
post-thumbnail

Serving GraphQL with HTTP

Web Request Pipeline

  • 최신 웹 프레임워크들은 대부분 미들웨어 스택을 통과하는 파이프라인 모델을 사용한다.
    - 이 때 GraphQL은 모든 인증 미들웨어의 뒤쪽에 위치해야 한다.
  • GraphQL을 이용해 HTTP 엔드포인트 핸들러에서와 동일한 세션, 사용자 정보에 접근할 수 있다.

URIs, Routes

  • GraphQL은 REST에서와 달리 개념 모델이 엔티티 그래프이다(REST는 리소스).
    - GraphQL의 엔티티는 URL로 식별되지 않으며 따라서 주어진 서비스에 대한 모든 요청은 관습적으로 /graphql 엔드포인트 하나에서 수행 된다.

HTTP Requests

GET

  • HTTP GET 요청을 수신할 경우 GraphQL 요청을 query 쿼리스트링에 지정해야 한다.

만약 아래와 같은 쿼리를 실행하고자 한다면

{
  me {
    name
  }
}

해당 요청은 아래의 URL과 같이 쿼리파라미터를 통해 전송 된다.

http://myapi/graphql?query={me{name}}

POST

  • 표준 GraphQL POST 요청은 application/json content-type을 사용한다.
  • 바디에는 아래와 같은 json 타입이 들어가며 operationName, variables는 선택적으로 사용할 수 있다.
    - operationName의 경우 쿼리에 여러 작업이 있을 경우에 사용한다.
  • 만약 쿼리 스트링 파라미터를 사용한다면 GET에서와 같은 방식으로 처리 된다.
  • header의 content-type을 application/graphql으로 사용할 수도 있는데, 이 경우 바디의 내용을 GraphQL 쿼리 스트링으로 처리한다.

Response

  • json 형식으로 반환 되며 데이터와 오류가 반환될 수 있다(오류는 오류가 있는 경우만).
    - 아래 예시의 경우 만약 오류가 없다면 errors 필드는 없어야 한다.
  {
    "data": { ... },
    "errors": [ ... ]
  }
profile
쿄쿄

0개의 댓글