[JavaScript] REST API 란?

D uuu·2023년 12월 13일
0

JavaScript

목록 보기
2/8

들어가며

프론트엔드 개발자로서 서버와 API 를 이용해 데이터를 요청을 하고 그에 대한 응답을 받아와서 화면에 어떻게 그릴지, 그리고 에러처리를 어떻게 할지에 대한 고민이 많은 부분을 차지한다고 생각이 드는데,

막상 REST API 에 대해서 물어보면 어떻게 대답해야 할지 하나도 모르겠다😅
API 는 뭐고 또 REST API 는 뭘까? 여러 블로그와 유투브를 찾아보면서 내용을 정리해봤다.

API 는 뭐지 ?

TV 를 조작하기 위한 리모콘, 자판기를 누르기 위한 버튼들과 같은 것들을 일명 인터페이스(interface)라고 한다. 기계와 인간 간의 소통 창구와 같은 것들을 모두 인터페이스라고 한다.

소프트웨어적으로 보면, 앱이나 사이트 접속시 보게 되는 버튼, 스크롤바, 브라우저 창들도 역시 모두 소프트웨어와 인간의 소통을 위한 UI(User Interface) 인 것이다.

이제 IT 관점에서 보면, 우리 눈에 보이지 않는 영역들이 더 많다. 기계와 기계, 소프트웨어와 소프트웨어 사이에도 수많은 요청과 정보 교환이 이루어지고 있는데, 이들 사이에도 소통할 수 있는 창구가 필요하다.

그럴때 누구나 정해진 양식(지정된 형식)으로 데이터를 요청/응답 받을 수 있도록 한 수단을 API(Application Programming Interface) 라고 한다.

REST API 란?

  • REST(Representation State Transfer) 의 약자로 요청된 주소만 보고도 어떤 내용에 관한 요청인지 예상할 수 있게 하는 형식을 말한다.

  • REST 는 자원(Resource) 을 URI 로 표현하고, HTTP 메서드(GET, POST, DELETE, PUT, PATCH) 를 사용해서 해당 자원의 CRUD 을 적용하는 것을 의미한다.

  • 즉, 네트워크상에서 Client 와 Server 사이의 통신하는 방식 중 하나이다.

  • 이런 REST 의 기본 원칙을 성실히 지킨 서비스 디자인을 RESTful 라고 표현하며, REST API 는 REST 아키텍처 스타일을 따르는 API를 의미한다.

REST API 의 구체적인 개념

  • REST API 는 자원, 행위, 표현의 3가지 요소로 구성되어 있다.

  • URI 를 통해 자원을 명시하고, HTTP 메서드 (GET, POST, DELETE, PUT, PATCH) 를 통해 해당 자원에 대한 CRUD 를 적용하는 것을 의미한다.

  • 웹의 모든 자원에는 고유한 ID 인 HTTP URI 가 있다.

자원(Resource) : URI
행위(Verb) : HTTP 요청 메서드 (GET, PUT, DELETE, POST, PATCH)
표현(Representations) : 행위에 대한 구체적 내용



왜 RESTful API 가 중요할까 ?

  • 플랫폼 간 호환성 : 최근의 서비스 / 애플리케이션의 개발 흐름은 멀티 플랫폼, 멀티 디바이스 시대로 넘어왔습니다. 단순히 하나의 브라우저만 지원하면 되었던 이전과는 달리 이제는 다양한 통신에 대응할 수 있어야 합니다. RESTful API는 HTTP를 기반으로 하기 때문에 플랫폼에 독립적입니다. 이는 서로 다른 프로그래밍 언어나 프레임워크를 사용하는 애플리케이션 간의 통신을 용이하게 합니다.

  • 확장성과 유지보수성: RESTful API는 자원 중심적인 아키텍처를 갖추고 있어, 새로운 리소스를 쉽게 추가하거나 기존 리소스를 수정할 수 있습니다. 또한 상태를 유지하지 않는(stateless) 아키텍처를 갖추고 있기 때문에 서버의 부하를 줄이고 확장성을 향상시킵니다.

따라서 HTTP 표준 규약을 지키면서 API 를 통신하는 방법이 매우 중요해졌다.


자원(Resource) - URI

모든 자원에는 고유한 URI 가 존재하고 이 자원은 서버에 존재합니다. 클라이언트는 URI 를 이용해서 필요한 자원을 지정하고 해당 자원의 정보를 서버에 요청할 수 있습니다.

예를들어
GET /todos : todos 의 데이터를 서버에 요청해서 가져온다
DELETE /todos/1 : todos 중에서 id 1번을 가진 데이터를 서버에 요청해 지운다.

URL 과 URI 의 차이점??
URL 은 Uniform Resource Locator 로 인터넷 상 자원의 위치를 의미합니다.
URI 는 자원의 위치뿐만 아니라 자원에 대한 고유 식별자로서 URL 의미를 포함하는 더 넓은 범위입니다.

행위(Verb) - HTTP 요청 메서드(method)

HTTP 요청 메서드는 클라이언트가 서버에게 요청의 종류와 목적을 알리는 방법이다. 주로 5가지 요청 메서드 GET, POST, DELETE, PUT, PATH 를 사용해서 CRUD 를 구현한다.

표현(Representations) - 페이로드(payload)

클라이언트와 서버가 데이터를 주고 받는 형태로 JSON, XML, TEXT, RSS 등이 있습니다. JSON, XML 을 통해 데이터를 주고 받는 것이 일반적입니다.



REST API 의 특징

1) Uniform (유니폼 인터페이스)

Uniform Interface는 URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일을 말합니다.

2) Stateless (무상태성)

REST는 무상태성 성격을 갖습니다. 다시 말해 작업을 위한 상태정보를 따로 저장하고 관리하지 않습니다. 세션 정보나 쿠키정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단순히 처리하면 됩니다. 때문에 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순해집니다.

3) Cacheable (캐시 가능)

REST의 가장 큰 특징 중 하나는 HTTP라는 기존 웹표준을 그대로 사용하기 때문에, 웹에서 사용하는 기존 인프라를 그대로 활용이 가능합니다. 따라서 HTTP가 가진 캐싱 기능이 적용 가능합니다. HTTP 프로토콜 표준에서 사용하는 Last-Modified태그나 E-Tag를 이용하면 캐싱 구현이 가능합니다.

4) Self-descriptiveness (자체 표현 구조)

REST의 또 다른 큰 특징 중 하나는 REST API 메시지만 보고도 이를 쉽게 이해 할 수 있는 자체 표현 구조로 되어 있다는 것입니다. HTTP 헤더와 HTTP 메서드, 그리고 URI 를 통해서 어떤 요청인지 명확히 구분할 수 있습니다.

5) Client - Server 구조

REST 서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조로 각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로간 의존성이 줄어들게 됩니다.

6) 계층형 구조

REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있게 합니다.


정리

REST 는 클라이언트와 서버간의 통신 방식을 규정한 아키텍처로 모든 자원은 고유한 URI 로 명시하고, HTTP 메서드인 GET, POST, DELETE, PUT, PATCH 를 통해 해당 자원에 대한 CRUD 를 적용합니다.

이러한 방식은 클라이언트와 서버 간의 통신을 단순화 시켜준다는 장점이 있으며, 또한 상태를 저장하지 않고 요청에 대한 응답만 내려주기 때문에 서버의 부하를 줄일 수 있다는 장점이 있습니다.







도움 받은 곳

https://meetup.nhncloud.com/posts/92
https://aws.amazon.com/ko/what-is/restful-api/
https://www.youtube.com/watch?v=iOueE9AXDQQ&t=152s

profile
배우고 느낀 걸 기록하는 공간

0개의 댓글