[Back-end]RESTful API란?

hyunjin·2023년 7월 24일
post-thumbnail

RESTful API란 정확히 무엇일까?

REST란,

Representational State Transfer의 약자이다.
자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미한다.

즉,
1. HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고
2. HTTP Method(POST, GET, PUT, DELETE, PATCH)를 통해
3. 해당 URI에 대한 CRUD Operation을 적용하는 것을 의미한다.

CRUD Operation이란?
CRUD는 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 일컫는다.

Create : 데이터 생성 (POST)
Read : 데이터 조회 (GET)
Update : 데이터 수정 (PUT, PATCH)
Delete : 데이터 삭제 (DELETE)

REST 구성 요소

REST는 다음과 같은 3가지로 구성 되어 있다.
1. 자원(Resource) : HTTP URI
2. 자원에 대한 행위 : HTTP METHOD (CRUD)
3. 자원에 대한 표현 : Representations

REST란, HTTP를 잘사용하기 위한 아키텍쳐 스타일이다.
REST는 URI와 HTTP 메소드를 사용해서 자원과 행위를 표현한다.
REST의 원칙을 지키면서 API의 의미를 표현하고 파악하기 쉽게 하는 것을 RESTful하다고 한다.
따라서, REST한 방식으로 데이터를 상호교환하게 설계된 API를 말한다.

HTTP를 잘 사용하기 위해, URI와 HTTP메소드를 사용해서, URL로 어떤 자원에 접근할 것인지, 메Method로 어떤 행위를 할 것인지 표현하여 설계된 API를 말한다.

REST의 조건

RESTful API로 간주되기 위해서는 몇가지 조건이 있는데, 그 중 가장 중요한건
1. 클라이언트-서버 커뮤니케이션 : 요청 간에 클라이언트 정보가 저장되지 않으며, 각 요청이 분리되어 있고 서로 연결 되어 있지 않는다.
2. Stateless(무상태)이다.

즉, 클라이언트와 서버 간 종속적이지 않다는 말이다.
서버는 클라이언트의 정보를 저장-유지하고 있지 않는다.
그러므로, 클라이언트가 요청 시 마다, 자기 정보를 보내야 하고, 서버는 받은 정보로 클라이언트의 정보를 확인한다.

때문에,
1. 멀티플랫폼 지원이 용이하다.
2. Stateless한 Restful API는 클라이언트의 요청(호출)을 어느 Server라도 동일하게 처리 한다.
3. 즉, 어떤 서버라도 클라이언트의 요청에 응답할 수 있다는 것은, 서버 환경이 분산되었든 아니든 클라이언트 쪽에서는 서버 쪽에 신경 쓸 필요 없이 API만 호출만 하면 원하는 결과를 얻을 수 있다는 점에서 RESTful API를 활용한다는 것이다.

꿀 팁! (면접관이 원하는 RESTful API의 장점)

  1. 보기 좋다.
    • URL만 보고 어떤 자원에 접근 할 것인지, 메소드를 보고 어떤 행위를 할 것인지 알 수 있기 때문에 개발에 용이하다.
  2. 자원을 아낄 수 있다.
    • 1개의 URI로 4개의 행위(CRUD)를 명시 할 수 있기 때문에, 굉장히 효율적이다.
  3. Stateless한 상태를 유지할 수 있다.
    • REST API의 가장 큰 특징으로, 다양한 브라우저와 모바일에서 통신할 수 있도록 한다.
    • 클라이언트가 서버에 종속되지 않아도 되기 때문에, scale out 한 상황에서도 용이하다.

정리!

RESTful API(=REST API)란,
REST한 방식으로 클라이언트와 서버 간 상호 데이터 교환을 하는 API이며, 서로 간에 stateless한 특징을 가지는 API이다. (+) Hypermedia 링크를 통해서 애플리케이션의 상태 전이가 가능해야 하고 Hypermedia에 자기 자신에 대한 정보가 담겨 있어야 진정한 REST API라고 볼 수 있다!

profile
Full-Stack Developer

0개의 댓글