본문 바로가기
Knowledge/CS

[CS] RESTful API 란 무엇인가

by YoonJong 2022. 11. 22.
728x90

API ( Application Programming Interface)

 - 응용 프로그램을 사용할 수 있도록 다른 응용 프로그램을 제어할 수 있게 만든 인터페이스

 - API를 사용하면 내부 구현 로직을 몰라도 정의되어있는 기능을 쉽게 사용할 수 있다

   인터페이스 -> 장치간 정보를 교환하기 위한 수단이나 방법 EX ) 마우스 , 키보드 등

 

REST (Representational State Transfer)

 - 자원의 이름으로 구분해서 해당 자원의 상태를 교환하는 것

 - HTTP URI 를 통해 자원을 명시하고 HTTP Method 를 통해 자원을 교환

 - REST 는 서버와 클라이언트의 통신 방식 중 하나

   HTTP Method : Create , Read , Update , Delete 


REST API

 - REST 아키텍처의 조건을 준수하는 어플리케이션 프로그래밍 인터페이스를 뜻한다.

 - 일반적으로 REST 아키텍처를 구현하는 웹 서비스를 RESTful 라고 표현한다.

 

REST API 특징

 - REST 기반으로 시스템을 분산하여 확장성과 재사용성을 높인다.

 - HTTP 표준을 따르고 있어 여러 프로그래밍 언어로 구현할 수 있다.


REST 의 장점

1. HTTP 표준 프로토콜을 사용하는 모든 플랫폼에서 호환이 가능하다.

2. 서버와 클라이언트의 역할을 명확히 분리한다.


REST 의 단점

1. 명확한 표준이 존재하지 않는다.

2. RESTful 을 완전히 만족하는 API를 만들기는 매우 까다롭다.

 

REST 의 특징(규칙)

 1. Server - Client 구조

 - 자원이 있는쪽이 Server , 요청하는 쪽이 Client

 - 클라이언트와 서버가 독립적으로 분리되어 있어야 한다.

2. Stateless ( 무상태 )

 - 요청 간에 클라이언트 정보가 서버에 저장되지 않는다.

 - 서버는 각각의 요청을 완전히 별개의 것으로 인식하고 처리한다.

3. Cacheable

 - HTTP 프로토콜을 그대로 사용하기 때문에 HTTP의 특징인 캐싱 기능을 적용한다

 - 대량의 요청을 효율적으로 처리하기 위해 캐시를 사용

 

* 캐시란 ?

더보기

Cache에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다. 

결국 Cache란 반복적으로 데이터를 불러오는 경우에, 지속적으로 DBMS 혹은 서버에 요청하는 것이 아니라 Memory에 데이터를 저장하였다가 불러다 쓰는 것을 의미한다.

 

4. 계층화 (Layered System)

 - 클라이언트는 서버의 구성과 상관없이 REST API 서버로 요청

 - 서버는 다중 계층으로 구성될 수 있음 ( 로드밸런싱, 보안, 캐시 등 )

 

5. 인터페이스 일관성(Uniform Interface)

- 정보가 표준 형식으로 전송되기 위해 구성 요소간 통합 인터페이스를 제공

- HTTP 프로토콜을 따르는 모든 플랫폼에서 사용 가능할 수 있도록 설계

 

참고

https://www.youtube.com/watch?v=RP_f5dMoHFc 

 

https://wonit.tistory.com/454

 

HATEOAS를 모르면 당신이 알고 있는 REST API는 REST API가 아니라고 장담할게요.

이 글은 그런 REST API 로 괜찮은가? 의 이응준 개발자님의 발표 자료에 여러 부분을 차용하였습니다. REST API란 무엇일까 난 지금까지 REST API에 대해서 상당 부분을 오해하고 있었다. REST API라고 함

wonit.tistory.com

 

728x90

'Knowledge > CS' 카테고리의 다른 글

[CS] OSI 7 계층 , TCP/IP 4 계층이란?  (1) 2022.11.27
[CS] CORS 란?  (0) 2022.11.25
[CS] HTTP 메서드와 하는 역할은 무엇일까?  (1) 2022.11.22
[CS] GET 과 POST의 차이점  (0) 2022.11.18
SSL HandShake 란 ?  (0) 2022.11.17

댓글