REST API란?

강풍윤·2022년 3월 11일
0

"REST API는 HTTP요청을 보낼 때 어떤 URI에 어떤 메소드를 사용할지 개발자 사이에 널리 지켜지는 약속"

먼저 결론적으로 말씀드리면 REST API란 위의 내용과 같습니다. 본문에서 위의 내용을 하나, 하나 나누어서 설명을 드리도록 하겠습니다.

1. HTTP요청이란?

HTTP란 웹 브라우저(Web Browser)와 웹 서버(Web Server)가 통신을 할 때 사용하는 통신규약입니다.

과거에는 HTTP가 하이퍼텍스트(hyper text)만 주고받았지만, 오늘날에는 우리가 인터넷에서 얻을 수 있는 모든 이미지, 영상 등 다양한 멀티미디어를 전송하는 중요한 프로토콜로 사용되고 있습니다.

웹에서 HTML, CSS, JS, 이미지와 같은 파일들이 서로 주고받는 콘텐츠입니다. 이러한 콘텐츠를 주고받기 위해 서버와 클라이언트가 알아들을 수 있는 공통의 약속인 메세지가 필요한데, 이 메세지를 HTTP라고 하며 크게 응답을 요청하는 Request와 요청에 대해 응답하는 Response 두 가지의 메세지가 존재합니다.

2. URI란?

URI(Uniform Resource Identifier)란 자원이 실제로 존재하는 위치와 그 자원을 식별할 수 있는 고유 식별자입니다.

그렇다면 위에서 말하는 자원이란 무엇일까요? 컴퓨터 언어에서는 리소스(resource)라고도 하는데요. 리소스란 주고 받는 데이터를 의미합니다.
리소스에는 데이터 한 건 한 건을 의미하는 엘리먼트(Element)와 데이터 집합, 즉 엘리먼트의 집합을 의미하는 콜렉션(Collection)의 개념을 가집니다.

우리가 책을 소개하는 서비스를 웹에서 제공하고 있다고 가정한다면, 제공하는 리소스에서 데이터의 집합 즉,여기선 books를 콜랙션, 그리고 책 하나 하나를 엘리먼트라고 합니다.

*REST API를 공부하시다보면 URI와 URL이라는 단어를 같이 사용하시는 것을 볼 수 있는데요.
URL는 Uniform Resource Location의 약자로 리소스가 실제로 위치하는 곳을 의미합니다. 하지만 위에서 URI를 설명했듯이, URI는 리소스가 실제로 존재하는 위치와 그 자원을 식별할 수 있는 고유 식별자이기도 함으로 URI 안에 URL의 개념이 내포한 것으로 보시면 됩니다.

3. 메소드란?

REST API에서의 메소드(Method)란 자원을 식별하는 리소스를 가공할 수 있는 방법을 의미합니다.

위에서 리소스처럼 정보에 대해 식별할 수 있었지만, 그러한 정보들을 가공할 수 없다면 제대로 활용할 수 없습니다. 예를 들어 이러한 정보들을 생성하고, 조회하고, 수정하고, 삭제할 수 있는 기능을 갖춘다면 우리는 이러한 정보들을 더욱 잘 활용할 수 있습니다.

생성,조회,수정,삭제 위 4가지의 기능을 HTTP에서 사용하는 메소드로는 크게 다음 5가지로 정리할 수 있습니다.

  • HTTP에서 생성을 의미하는 메소드는 POST
  • HTTP에서 조회를 의미하는 메소드는 GET
  • HTTP에서 수정을 의미하는 메소드는 PUT과 PATCH
  • HTTP에서 삭제를 의미하는 메소드는 DELETE

HTTP method에서 수정에는 PUT과 PATCH 두 방법이 있는데, PUT은 전체 수정을 할 때 사용하며, PATCH는 부분만 수정할 때 사용합니다. PATCH는 기존의 정보에서 언급한 부분만 정보가 갱신되고 다른 정보에 영향을 주진 않지만, PUT은 기존의 정보에서 언급하지 않은 곳은 삭제가 되버리기 때문에 두 메소드가 어떻게 다른지 잘 이해하고 사용해야 됩니다.

4. 정리

REST API는 데이터의 리소스는 URI를 통해 식별하고, HTTP의 규정대로 HTTP method를 통해 데이터를 가공하는 개발자들의 약속입니다.
생활코딩, 기계들의 대화법 - REST API 중에서

4-1. REST란?

REST는 Representational state transfer의 약자로, 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식입니다. 쉽게 말하면, 과거의 SOAP라는 복잡한 형식에서 API에서 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능하게 설계된 형식입니다.

4-2 REST API가 만들어진 배경

서비스를 개발자 혼자서 만든다고 하면 기능 자체에 문제없이 개발자가 혼자만 이해할 수 있는 내용으로 만드면 문제가 없겠지만, 나중에 이 일을 인계받는 다른 개발자가 있다면, 그 개발자는 굉장히 일하기 어려워질 것입니다. 따라서 HTTP 요청을 보낼 때 어떤 URI에 어떤 메소드를 사용할지 개발자들이 이해하기 쉽게 만든 형식입니다.

4-3 REST API in OSI Layer

REST API는 두 시스템과 통신하기 위한 프로토콜이 아닙니다. OSI 계층으로 구분했을 때, HTTP 계층 상단에 존재하는 응용 계층(application layer)에 포함됩니다. 따라서 통신 상태를 확인할 때 HTTP 통신 상태에서 문제가 발생한 것인지 REST API에서 통신 상태 문제가 발생한 것인지 구분할 줄 알아야 합니다.

5. 참고사이트

  1. 얄팍한 코딩사전, "REST API가 뭔가요?"
    https://www.youtube.com/watch?v=iOueE9AXDQQ
  1. 생활코딩, "기계들의 대화법 - REST API"
    https://www.youtube.com/watch?v=PmY3dWcCxXI

  2. 김동현, "URL과 URI의 차이점"
    https://velog.io/@torang/URL%EA%B3%BC-URI%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90

  3. covenant, "REST란? REST API 디자인 가이드"
    https://covenant.tistory.com/241

profile
https://github.com/KANGPUNGYUN

0개의 댓글