REST API란 무엇인가?

계발자·2024년 4월 18일
post-thumbnail

REST란?

요청된 주소만 보고도 어떤 내용에 관한 요청인지 예상할 수 있게 하는 형식을
REST (Reporesentational State Transfer) 라고 합니다.

REST는 자원(Resource)을 URI로 표현하고, HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 해당 자원을 조작하는 소프트웨어 아키텍처의 형식을 말합니다.

네트워크 상에서 Client와 Server 사이의 통신하는 방식 중에 하나의 개념이라고 보면 됩니다.

URI로 표현하고 HTTP 메서드를 사용한다는 의미가 무엇인지 좀 더 쉽게 알아보겠습니다.


REST API

위의 그림처럼 /blogs 라는 요청의주소만으로 "블로그 리스트를 보내달라는 요청이구나" 라고 알 수 있습니다. 주소만 봐도 알 수 있도록 라우팅을 만드는 것이 REST API의 기본입니다.

간단한 주소를 살펴보겠습니다.

http://blogs/2/post?idx=2

웹 서핑을 하다보면 위 주소와 같은 형식으로 도메인 주소가 바뀌는 것을 볼 수 있습니다.
주소만 봐도 블로그 2페이지의 2번째 게시글을 조회한 것을 알 수 있습니다.
자원을 구조와 함께 나타내는 형태URI 라고 합니다.

다음으로 :id를 사용한 예제를 보겠습니다.

app.get('/users/:id', (req, res) => {
  const userId = req.params.id;
  // ID가 userId인 사용자의 정보를 가져오는 로직
  const userData = { id: userId, name: 'John Doe' };
  res.json(userData);
})

위 코드는 /users/:idURIGET 요청을 받고,
해당 사용자의 정보를 JSON 형식으로 응답하는 코드입니다.

REST는 무언가를 요청하고, 응답 받는 개념이라는 것을 확인할 수 있습니다.

그렇다면 REST API란 무엇일까요?


REST API

REST API는 REST 아키텟처 스타일을 따르는 웹 서비스를 위한 인터페이스

REST API클라이언트가 서버에 요청을 보내고, 서버는 요청에 대한 응답을 제공하는 방식으로 동작합니다.

즉, REST API는 REST 아키텍처 스타일을 따르는 API를 의미합니다.

간단한 예제로 다시 알아보겠습니다.

const axios = require('axios');

axios.get('https://api.example.com/users/1')
  .then(res => {
    const userData = res.data;
  	console.log(userData);
  })
  .catch(err => {
  	console.error(err)
  })

axios를 사용하여 /users/1 URIGET 요청을 보내고, 응답 받은 사용자의 정보를 출력하는 코드입니다.

위의 REST API 개념의 그림처럼 4가지 형식의 인터페이스를 통해 정보를 변경할 수 있습니다.

GET : 블로그 리스트 가져오기, 찾기
POST : 게시글 만들기
PUT : 게시글 수정하기
DELETE : 게시글 삭제하기

REST 라는 형식에 규칙이 정의된 코드(API)를 붙여 표현한 것이 REST API라는 것을 알았습니다.

그렇다면 RESTful은 무엇일까요?


RESTful 하다

REST의 원칙을 잘 따르고 있는 것을 의미

RESTful APIURI(Uniform Resource Identifier)를 사용하여 리소스를 식별하고, HTTP 메서드를 사용하여 리소스에 대한 작업을 수행합니다.

또한, 상태 관리를 하지 않고, 캐싱, 계층화, 자체 서술적인 메세지 등의 REST 제약 조건을 따릅니다.

정의만 보았을 때는 이해가 잘 가지 않는데요.
예제를 살펴보겠습니다.

app.get('/users/:id', (req, res) => {
  const userId = req.params.id;
  // ID가 userId인 사용자의 정보를 가져오는 로직
  const userData = { id: userId, name: 'John Doe' };
  res.json(userData);
})

위에 REST에 대해 알아보았을 때 사용했던 예제입니다.
/users/:id URIGET 요청을 받고, 해당 사용자의 정보를 JSON형태로 응답받는
RESTful API를 구현한 코드입니다.

다시 말하면,
RESTful 하다는 말은 REST 원칙을 잘 따르고 있다는 것을 의미합니다


면접에서 해당 기술 질문을 받았을 때 아예 모르는 내용은 아니었지만 선뜻 대답하지 못했었는데요.
기능 구현을 하더라도 기본적인 개념에 대해서는 숙지하고 있는 것이 좋은 것 같습니다.

profile
3년차 닭띠 프론트엔드 개발자입니다.

0개의 댓글