alpyrithm_알파이리즘
API 정리 - RESTful API, GraphQL 본문
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)에 해당할 때 사용
728x90
반응형
'SM공부' 카테고리의 다른 글
HTTP 프로토콜 및 상태 코드 정리 (0) | 2020.09.04 |
---|---|
VPN(Virtual Private Network)이란? (0) | 2020.07.15 |
RudderStack Architecture 알아보기!! (0) | 2020.06.19 |
비전공자의 CS 공부, SM 프로젝트 공부 목록 (0) | 2020.06.19 |
스크럼(Scrum) 공부 및 정리 (0) | 2020.06.10 |
Comments