RESTful API
API
Application Programming Interface
응용 프로그램 간 데이터를 주고 받는 방식
Open API
데이터, 정보, 서비스 등을 누구나 사용할 수 있도록 공개된 API를 말합니다.
📌 장점
- 빠르고 유연한 비지니스 구축
- 비지니스 품질 향상
- 생태계 확립
- 적은 비용
- 빠른 시스템 도입
- 비지니스 품질 향앗
📌 단점
- 정보 부족(웹에 적용하기 부족한 부분)
- 정확성이 낮을 수 있음
📌 자원이란?
해당 소프트웨어가 관리하는 문서, 그림, 데이터, 해당 소프트웨어 자체 모든 것.
📌 표현이란?
그 자원을 표현하기 위한 이름 예를 들어, DB 학생 정보(students)
📌 상태전달이란?
데이터가 요청되는 시점에 자원의 상태로 JSON 또는 XML
REST
Representational State Transfer
/리소스명/리소스 ID/관계가 있는 다른 리소스명
- 자원 : URI 고유한 ID 예를 들어, /exgroups/:exgroup_id
- 행위 : Method, GET, POST, PUT, PATCH, DELETE(CRUD)
- 표현 : JSON, XML, TEXT, RSS 등
웹 기존 기술과 HTTP 프로토콜을 그대로 활용해 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일입니다.
네트워트 상에서 Client와 Sever사이의 통신 방식 중 하나.
📌 REST 특징
- 유니폼 인터페이스 : HTTP 표준만 따르면 어떤 언어나 플랫폼에서도 사용 가능
- Stateless : 상태 정보를 유지하지 않는다. 서버는 각각 요청을 완전히 다른 것으로 인지하고 처리
- Casheable : HTTP라는 기존 웹 표준을 그래도 사용하기에 기존 인프라를 그대로 활용할 수 있다.
- Self-descriptiveness : REST API 메세지만 보고도 쉽게 이해할 수 있는 자체 표현 구조로 되어 있다.
📌 장점
- HTTP 프로토콜 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요 없다.
- HTTP 프로토콜 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있다.
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능
- Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
- REST API 메세지가 의도하는 바를 명확한게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
- 여러가지 서비스 디자인에서 생길 수 있는 문제를 최소화 한다.
- 서버와 클라이언트의 역할을 명확하게 분리한다.
📌 단점
- 표준이 존재하지 않는다.
- HTTP Method 형태가 제한적이다
- 브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header값이 왠지 더 어렵게 느껴진다.
- 구형 브라우저가 아직 제대로 지원해주지 못하는 부분이 존재한다.
RESTful API 실습
📄 googleAPITest.http
get https://www.googleapis.com/books/v1/volumes?q=intitle=Node.js
Send Request 클릭!
RESTful API
REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용하는 용어
REST 원리를 따르는 시스템
근본적인 목적이 성능 향상에 있는 것이 아니라 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이기 위해 사용.
성능이 중요한 상황에서는 굳이 RESTful한 API를 구현할 필요는 없다.
📌 장점
- 확장성(시스템 분산)
- 재사용성
- 가독성
- 유지보수 및 운용 편리
📌 단점
- 메소드 형태 제한적
- 표준이 존재하지 않아 관리의 어려움이 있음
GraphQL
기존의 REST API로는 원하는 형태 정보로 가져오기 힘들었다.
정보를 요청하는 쪽에서 원하는 형태로 가져로고 수정할 수 있는 Query Language
📌 Over-Fetching
필요한 정보보다 더 많은 데이터를 전달 받는것
이에 따라, 불필요한 리소스가 낭비됨
📌 Under-Fetching
필요한 데이터를 만들기 위해 여러번 호출이 필요(추가적인 리소스 요청 발생)
요청을 통해 전달 받은 정보를 조합하는 추가 작업 또한 발생
https://graphql.org/swapi-graphql
SWAPI GraphQL API
graphql.org
'CS(ComputerScience)' 카테고리의 다른 글
Memory allocation using implicit free block tracking and next-fit method (0) | 2023.04.10 |
---|---|
Memory allocation using implicit free block tracking and first-fit method (0) | 2023.04.10 |
HTTP, HTTPS (0) | 2022.11.29 |
프로세스, 스레드, 비동기 (0) | 2022.11.22 |
CPU (0) | 2022.11.11 |