Web-Network

[백엔드] Rest API / Restful API 란 무엇인가요

민돌v 2022. 3. 4. 19:09

 

 

이 포스팅에서 말하는 건, 진정한 의미에서의 REST API 가 아닙니다.
명확하게 말하자면 HTTP API에 가깝고, 진정한 의미의 REST API 는 다음 글 (https://thalals.tistory.com/335) 을 봐주세요!

 

 

백엔드 면접 단골질문,, restful api란 무엇인가요!?

 

이제 한방에 정리해보고자 합니다.

RESTful하다는, REST를 잘 지킨것이고, REST API는 REST형식으로 설계된 API를 말합니다.


따라서, RESTful API란 REST한 방식으로 프로그램간 정보 교환 등의 상호작용을 가능하게 하는 것이 RESTful API입니다..!

끝이없는,, REST,,

여기서 중요한것은, REST API가  무엇인지 보다, REST API를 왜 사용해야하는지 입니다.

 

1) REST란,

2) REST API란

3) RESTful API의 장점

4) 정리


REST 와 REST API는 다르다.

 

1) REST란

REST란, HTTP를 잘사용하기 위한 아키텍쳐 스타일 입니다.

REST는 URI와 HTTP 메소드를 사용해서 자원과 행위를 표현합니다.
REST의 원칙을 지키면서 API의 의미를 표현하고 쉽고, 파악하기 쉽게 하는것을 Restful 하다고 합니다.


2) REST API란

REST한 방식으로 데이터를 상호교환하게 설계된 API를 말합니다.  이걸 풀어말하면

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

 

또한 API가 RESTful로 간주되기 위해서는 몇가지 조건이 있는데 그 중 가장 중요한 건,

  • 클라이언트-서버 커뮤니케이션: 요청 간에 클라이언트 정보가 저장되지 않으며, 각 요청이 분리되어 있고 서로 연결되어 있지 않음
  • Stateless(무상태)입니다.

 

클라이언트와 서버간 종속적이지 않다는 말입니다.

즉, 서버는 클라이언트의 정보를 저장-유지하고 있지않아, 같은 사람이보낸 정보도, 같은사람이 보냈는지 정보를 유지하고있지 않다는 말입니다.

 

이말은 즉, 클라이언트가 요청시 마다, 자기 정보를 보내야하고, 서버는 받은 정보로 클라이언트의 정보를 확인합니다.

 

따라서,  

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

 

3) RESTful API를 사용하면 좋은점

위의 한문장이 사실 rest api를 의미하지만, 단순 정의일뿐 면접관이 의도한 대답은 아니라고 생각됩니다.

 

REST API의 장점은

1. 보기 좋다. 

  • URL만 보고 어떤 자원에 접근할 것인지, 메소드를 보고 어떤 행위를 할지 알 수 있기 때문에, 개발을 할때 용이합니다.

2. 자원을 아낄 수 있다.

  • 1개의 URI로 4개의 행위(CRUD)를 명시할 수 있기 때문에, 굉장히 효율적입니다.

3. stateless한 상태를 유지할  수 있다.

  • 이게 제일 중요합니다.
  • REST API의 가장 큰 특징으로, 다양한 브라우저와 모바일에서 통신할 수 있도록 합니다.
  • 클라이언트가 서버에 종속적이지 않아도 되기때문에, scale out한 상황에서도 용이합니다.

 


4. 정리

RESTful API(=REST API)란,

REST한 방식으로 클라이언트와 서버간 상호 데이터 교환을 하는 API이며, 서로간에 stateless한 특징을 가지는 API입니다.

 

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

✔️근데 이게 잘 안지켜지는 것 같은 느낌이다.. 그래서 로이필딩씨가 많이 화난것같은.. ㅋㅋㅋㅋㅋㅋ

 


 

(+ 추가 정정)

  • 댓글로 hateoas란걸 알려주셔서 찾아보니 REST API라고 부를 수 있을만한 조건은 총 4가지정도가 있었다,
  • 위에서 말한거 거기서 2~3가지를 지킨것..!  아래의 글을 참고하면 좋을것같다!

[🔥 공대생은 성장 중/세미나] - [Restful api 란] - 진짜 Rest API 란 무엇이고 어떻게 써야하는 걸까?

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

 

 

 

 

 

 


*참고