코딩스토리

REST API 본문

Spring/Spring 공부

REST API

kimtaehyun98 2022. 1. 16. 01:30

언젠간 REST API에 대해 정리할 날이 올 거라 생각했지만 그게 오늘입니다!

 

올해 초 진행했던 웹 프로젝트에서 Serverless Back-end를 구현하기 위해 AWS의 Lambda와 API Gateway를 사용하여 많은 REST API들을 구축했지만 그때 당시에는 그냥 JSON과 HTML 메서드로 통신하는구나 정도만 이해하고 만들었었다.

 

그러다 보니 동아리 면접에서 REST API가 뭔가요?라는 질문에 뒤통수를 두 대 맞은 듯 멍 때리다가 제대로 된 답변을 하지 못했던 기억이 있다..😥

 

다행히도 저 동아리 면접은 붙었지만 결과적으로 합격한 동아리에서 이번에 앱 런칭 프로젝트를 진행하는데 Android와의 협업을 위해 또 한 번 많은 REST API를 구축해야 하는 상황이 생겼다.

 

그렇기 때문에 프로젝트에 들어가기 전 확실히 알고 들어가자!

 

REST API란?


REST란 Representational State Transfer라는 용어의 약자이다. 그래서 RESTful API라고 불리기도 한다.

REST는 아키텍처이다. Roy Fielding 박사가 2000년에 자신의 박사학위 논문에서 처음으로 정의했다.

 

REST는 다음과 같이 구성되어 있다.

  • 자원(RESOURCE) - URI
  • 행위(Verb) - HTTP METHOD
  • 표현(Representations)

 

행위가 HTTP Method 임을 기억하고 넘어가자.

 

 

REST API 규칙


REST API는 다음과 같이 6가지 규칙을 만족해야 한다.

 

1. 균일한 인터페이스

 

Uniform Interface라고 하며 리소스(URI), 즉 자원에 대한 조작을 통일되고 한정적인 인터페이스로 수행해야 한다.

즉 요청이 어디에서 오는지와 상관없이 동일한 리소스에 대한 모든 API 요청은 동일하게 보여야 한다.

 

2. 클라이언트-서버 디커플링

 

REST API 아키텍처에서는 클라이언트와 서버는 독립적이어야 한다.

클라이언트가 알아야 하는 유일한 정보는 요청된 리소스의 URI이며 해당 방법으로만 서버와 통신이 가능해야 한다.

서버는 요청된 데이터를 전달하는 것 말고는 클라이언트를 건들지 말아야 한다.

이렇게 서로 간의 의존성이 줄어들어야 한다.

 

3. Stateless

 

REST API는 Stateless 해야 한다.

Stateless 하다는 것은 어떠한 비즈니스 로직에 대한 정보를 따로 저장하고 관리하지 않는다는 것이다.

즉 서버 측에서 세션이나 쿠키 정보를 관리할 필요가 없다는 것이다.

 

4. 캐싱 가능성

 

REST API는 HTTP를 그대로 사용하기 때문에 HTTP가 가진 캐싱 기능을 사용할 수 있다.

이는 서버 측의 확장성 증가와 클라이언트 측의 성능 향상을 동시에 얻는다.

 

5. 계층 구조 아키텍처

 

REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있다.

 

6. 코드 온디맨드(옵션)

 

REST API는 일반적으로 정적 리소스를 전송하지만, 특정한 경우에는 응답에 실행 코드를 포함할 수도 있다.

 

 

 

REST API URI 설계


첫 번째, URI는 정보의 자원을 표현해야 한다.
두 번째, 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.

 

 

GET /member/update   ->  X
PUT /member          ->  O

 

해당 요청이 member의 정보를 update 하는 요청이라고 하자.

자원에 대한 행위는 update, 즉 PUT 메서드를 사용해야 한다.

 

간단하면서도 꼭 지켜야 할 규칙인 것 같다.

 

 

 

이렇게 REST API에 대해 알아보았다.

 

REST API를 공부해보면서 느낀 점은 뭔가 한마디로 정의하기 힘든? 개념인 것 같다.

 

"REST API란 RESTful 하게 개발된 API이며 이 RESTful 하다는 것은 위에 언급된 6개의 규칙을 따른 것이다.

각각의 규칙은 이렇고 이러한 점은 어떠한 장점이 있다."

라고 설명하는 게 좋지 않을까 싶다. (갑자기 면접 PTSD가 와서 정리해봤습니다..)

 

REST API는 HTTP API라고도 불린다.

그만큼 HTTP가 REST API의 가장 큰 특징이라는 점이다.

 

REST API를 잘 개발하기 위해서는 HTTP를 잘 이해하는 게 중요한 것 같다.

 

 

참고 블로그

https://meetup.toast.com/posts/92

 

REST API 제대로 알고 사용하기 : NHN Cloud Meetup

REST API 제대로 알고 사용하기

meetup.toast.com

 

Comments