본문 바로가기

CS(ComputerScience)

RESTful API

728x90

RESTful API


API

Application Programming Interface

API, 출처 : 내일배움캠프 4기 특강

응용 프로그램 간 데이터를 주고 받는 방식


 

Open API

데이터, 정보, 서비스 등을 누구나 사용할 수 있도록 공개된 API를 말합니다.

Open API, 출처 : 내일배움캠프 4기 특강

 

📌 장점

  • 빠르고 유연한 비지니스 구축
  • 비지니스 품질 향상
  • 생태계 확립
  • 적은 비용
  • 빠른 시스템 도입
  • 비지니스 품질 향앗

 

📌 단점

  • 정보 부족(웹에 적용하기 부족한 부분)
  • 정확성이 낮을 수 있음

📌 자원이란?

해당 소프트웨어가 관리하는 문서, 그림, 데이터, 해당 소프트웨어 자체 모든 것.

 

📌 표현이란?

그 자원을 표현하기 위한 이름 예를 들어, 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 등

REST 출처 : 내일배움캠프 4기 특강

웹 기존 기술과 HTTP 프로토콜을 그대로 활용해 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일입니다.

네트워트 상에서 Client와 Sever사이의 통신 방식 중 하나.

 

📌 REST 특징

  • 유니폼 인터페이스 : HTTP 표준만 따르면 어떤 언어나 플랫폼에서도 사용 가능
  • Stateless : 상태 정보를 유지하지 않는다. 서버는 각각 요청을 완전히 다른 것으로 인지하고 처리
  • Casheable : HTTP라는 기존 웹 표준을 그래도 사용하기에 기존 인프라를 그대로 활용할 수 있다.
  • Self-descriptiveness : REST API 메세지만 보고도 쉽게 이해할 수 있는 자체 표현 구조로 되어 있다.

 

📌 장점

  1. HTTP 프로토콜 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요 없다.
  2. HTTP 프로토콜 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있다.
  3. HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능
  4. Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
  5. REST API 메세지가 의도하는 바를 명확한게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
  6. 여러가지 서비스 디자인에서 생길 수 있는 문제를 최소화 한다.
  7. 서버와 클라이언트의 역할을 명확하게 분리한다.

 

📌 단점

  1. 표준이 존재하지 않는다.
  2. HTTP Method 형태가 제한적이다
  3. 브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header값이 왠지 더 어렵게 느껴진다.
  4. 구형 브라우저가 아직 제대로 지원해주지 못하는 부분이 존재한다.

RESTful API 실습

REST Client 설치

📄 googleAPITest.http

get https://www.googleapis.com/books/v1/volumes?q=intitle=Node.js

Send Request 클릭!


RESTful API

REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용하는 용어

REST 원리를 따르는 시스템

 

근본적인 목적이 성능 향상에 있는 것이 아니라 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이기 위해 사용.

성능이 중요한 상황에서는 굳이 RESTful한 API를 구현할 필요는 없다.

 

📌 장점

  • 확장성(시스템 분산)
  • 재사용성
  • 가독성
  • 유지보수 및 운용 편리

 

📌 단점

  • 메소드 형태 제한적
  • 표준이 존재하지 않아 관리의 어려움이 있음

GraphQL

GraphQL API, 출처 : 내일배움캠프 4기 특강

기존의 REST API로는 원하는 형태 정보로 가져오기 힘들었다.

정보를 요청하는 쪽에서 원하는 형태로 가져로고 수정할 수 있는 Query Language

 

📌 Over-Fetching

필요한 정보보다 더 많은 데이터를 전달 받는것

이에 따라, 불필요한 리소스가 낭비됨

 

📌 Under-Fetching

필요한 데이터를 만들기 위해 여러번 호출이 필요(추가적인 리소스 요청 발생)

요청을 통해 전달 받은 정보를 조합하는 추가 작업 또한 발생


 

https://graphql.org/swapi-graphql

 

SWAPI GraphQL API

 

graphql.org

 

GraphQL API 실습