본문 바로가기
Back-end

REST API 개념 정리!!

by kkkdh 2022. 9. 15.
728x90

REST API란?

정보를 주고받는 데 있어서 개발자들이 널리 사용하고 있는 일종의 형식을 의미합니다.

web API 중에서도 REST architecture를 준수하는 API를 REST API라고 부르며, RESTful API라고 부르기도 합니다.


그렇다면 API란?

tv를 조작하기 위한 리모컨이나 자판기를 위한 버튼 같이 Application을 위한 interface를 의미합니다. Interface는 인간과 기계의 소통을 돕는 일종의 장치 같은 개념입니다.

 

소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단을 Application Programming Interface 줄여서, API라고 부릅니다! 😀

 

간단하게 서비스나 프로그램 간에 세부적인 구현 사항을 알지 않아도 미리 정해진 기능을 실행할 수 있도록 하는 정해진 규약을 의미한다고 생각하면 좋을 것 같습니다. (API의 종류로는 운영체제 API, 프로그램 언어 API, 웹 API 등 다양하게 존재합니다.)


그렇다면 그 중에서 REST(REpresentational State Transfer) API란 무엇인가?

Front-end 웹에서 서버에 데이터를 요청하거나, 배달 앱의 서버에 주문을 넣는 등의 서비스에 널리 사용되는 것이 REST란 형식의 API들입니다. (이는 과거의 SOAP이란 복잡한 형식을 대체합니다.)

 

물론 기능만 잘 동작하는 서비스를 만들기 위해서라면 임의로 형식을 지정해서 구현하면 문제가 없겠지만, 서비스를 한 명의 개발자가 구현하는 것이 아니기 때문에, 특정 형식에 개발 형식을 맞추는 행위가 요구됩니다.

 

따라서 REST라는 개념은 웹에서 자료를 전송하기 위한 표현 방법에 대한 architecture를 의미하며 REST를 정확하게 구현하기 위해서는 많은 제약 사항이 따르지만, 기본적인 REST 구조만을 따라 구현해도 더 좋은 구조의 API를 구성할 수 있습니다. 

 

서버에 REST API로 요청을 보낼 때에는 HTTP protocol에 따라 신호를 전송합니다. 이 HTTP에도 많은 기능들이 있는데 목적에 따라 다음과 같이 정리할 수 있습니다.

 

1. GET: data read

ex) https://(domain)/classes/2/students

위와 같은 URI에 GET method라면, "이 반의 학생들을 조회하는 구나"라고 해석할 수 있습니다.

 

2. POST: create

ex) https://(domain)/classes/2/students

동일한 URI 이지만, POST 요청을 짜서 body에 새로운 학생의 정보를 전송하여, 새로운 데이터를 생산해낼 수 있습니다.

 

3. PUT or PATCH: update

ex) https://(domain)/classes/2/students/3

알려진 바로는 PUT은 통째로 갱신할 때, PATCH는 일부를 수정할 때 사용하는 method라고 합니다.

 

4. DELETE: delete

ex) https://(domain)/classes/2/students/3

특정 데이터의 삭제를 원하기 때문에 URI에 index까지 명시해야 하기 때문에 위의 예시와 같은 URI 형태를 가질 것입니다.

 

여기서 URI (Uniform Resource Identifier)란

하나의 자원을 가리키는 문자열을 의미하며, 대표적인 URI로 URL이 있습니다.

 

물론 위의 메서드 들을 구분하기 않고 하나의 메서드를 이용해 모든 기능을 구현할 수는 있겠지만, 이렇게 되는 경우 URI 자체에 기능에 대한 명시가 돼야 하므로 URI가 길어지게 되는 비효율성이 증가되므로, 기능에 따라 HTTP method를 다르게 사용하는 것이 좋다고 합니다!!

 

이에 따른 REST API의 규칙 중 하나가 바로 URI는 동사가 아닌 명사로 이루어져야 한다는 점입니다. 

 

URL 표현법

  • REST API의 URL 자원은 복수형 명사로 표현
  • 하나의 자원에 대한 접근은 복수형 + 아이디를 통해 접근
  • /posts 는 ‘게시글 전체’를 칭하는 URL이면
  • /posts/1 은 ‘1번 게시글’을 칭하는 URL로 지정 사용이 가능하다.
  • REST API는 URL을 통해 자원을 계층적으로 표현함 /users/1/posts라는 URL은 ‘1번 유저의 게시글 전체’라는 자원을 표현하는 URL로써 사용된다고 설명 가능

요약정리

REST API는 REST Architecture를 준수하는 web API를 의미하며, URL을 통한 자원의 표현 방법과 HTTP method를 이용한 API 동작 정의 정도만 제대로 구현해도 훌륭한 REST API를 구현할 수 있다.

728x90

댓글