alpyrithm_알파이리즘

API 정리 - RESTful API, GraphQL 본문

SM공부

API 정리 - RESTful API, GraphQL

알파이 2020. 9. 4. 15:23

 

  API 정의

Application Programming Interface

- 응용프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스

 

 

▼ 이전 글 참고하기

2020/06/19 - [SM공부] - API 공부 및 정리!

 

 

 

 

  RESTful API

- 정의

  • REpresentational State Transfer
  • 클라이언트(웹브라우저, 모바일)가 필요한 자원이 있을 때, 서버에게 요청하는 방식을 정의한 API 디자인
  • API 설계의 중심에 자원(resource)이 있고 HTTP Method를 통해 자원을 처리하도록 설계하는 방식
  • 자원(Resource - URI), 행위(Verb - HTTP METHOD), 표현(Representations)으로 구성

 

- 장점

  • HTTP 프로토콜을 사용하므로 REST API 사용을 위한 인프라의 구축 불필요성
  • HTTP 표준 프로토콜을 따르는 모든 플랫폼에서의 호환성(범용성)
  • REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악 가능
  • 서버와 클라이언트의 역할을 명확하게 분리

 

- 단점

  • 표준이 존재하지 않음
  • 사용할 수 있는 메서드(4가지) 한계
  • 구형의 브라우저가 아직 지원하지 못하는 부분이 존재

 

⇒ HTTP/HTTPs에 의한 caching을 잘 사용하거나 단순한 Text로 처리되지 않는 요청 또는 요청의 구조가 정해져 있을 때 사용

 

 

 

 

  GraphQL

- 정의

  • Graph Query Language
    • Query Language : 정보를 얻기 위해 보내는 질의문(Query)을 만들기 위해 사용되는 언어
  • Server API를 통해 정보를 주고받기 위해 사용하는 Query Language
  • 주로 하나의 EndPoint를 사용
  • 요청할 때 사용한 Query문에 따라 응답의 구조가 다름
  • 지정한 틀이 없기 때문에 유연함

 

- 장점

  • HTTP 요청의 횟수 감소
    • 여러 리소스에 대한 요청을 한 번으로 진행할 수 있음
  • HTTP 응답의 Size 감소
    • RESTful은 응답의 형태가 정해져 있고, 따라서 불필요한 정보만 부분적으로 요청하는 것이 힘들지만 GraphQL은 원하는 대로 정보를 요청하는 것이 가능

 

- 단점

  • File 전송 등 Text만으로 하기 힘든 내용 처리 복잡
  • 고정된 요청과 응답만 필요할 경우에는 Query로 인해 요청의 크기가 RESTful API의 경우보다 더 큼
  • 재귀적인 Query가 불가능
    • 결과에 따라 응답의 깊이가 얼마든지 깊어질 수 있는 API를 만들 수 없음

 

⇒ 다양한 요청들에 대해 응답하거나 대부분의 요청이 CRUD(Create-Read-Update-Delete)에 해당할 때 사용

 

 

 

 

 

 

반응형
Comments