REST API, RESTful API 정리

미음제

·

2022. 9. 29. 17:14

 

 

REST 용어

 

Representational State Transfer의 약자로 로이 필딩 논문(2000년)에 처음으로 소개되었다. Wiki 정의를 보면 다음과 같다.

 

REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. 이 용어는 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었다. 필딩은 HTTP의 주요 저자 중 한 사람이다. 이 개념은 네트워킹 문화에 널리 퍼졌다.

 

로이 필딩은 잘 설계되어 있는 HTTP를 제대로 사용하지 못하는 것에 대한 아쉬움이 있어 최대한 활용할 수 있는 REST 아키텍처를 발표했다고 한다.

 

REST API, RESTful API란?

 

REST는 API와 같은 프로토콜이 아닌 하나의 소프트웨어 아키텍처로 API 작동 방식에 어떤 조건을 부여하는 것이다. REST의 기본 원칙을 지킨 서비스 디자인을 RESTful이라고 표현한다.

 

RESTful API를 통해 특정 자원에 대해 요청할 수 있고 응답을 받을 수 있다. 

 

REST의 구성

 

  1. 자원 - URI
  2. 행위 - Method(GET, POST, PUT, PATCH, DELETE)
  3. 표현 - HTTP Message Payload

 

REST 핵심 규칙

 

URI자원을 표현하는데 집중하고,
Method행위에 대한 정의를 한다.

 

URI는 자원을 표현하면서 동사 사용을 지양하고 명사 사용을 지향한다. Method는 자원에 대한 행위를 나타낸다. 이 핵심 가치를 통해 API로 무엇을 하는지 명확하게 이해할 수 있어야 한다.

 

// BAD
GET : www.example.com/getUser/1

// GOOD
GET : www.example.com/user/1

 

// BAD
GET : www.example.com/user/1/delete

// GOOD
DELETE : www.example.com/user/1

 

Method 종류

 

Method 행위 내용 Body(Payload)
GET 검색 특정 index 혹은 모든 리소스 조회 X
POST 생성 서버에 리소스를 생성 O
PUT 교체 리소스 전체를 교체 O
PATCH 수정 리소스 일부만 수정 O
DELETE 삭제 특정 index 혹은 모든 리소스 삭제 X

 

PATCH와 PUT의 차이

 

기본적으로 두 메소드 모두 수정(업데이트)을 위한 메서드이다. 다만 PUT의 경우 수정을 원하지 않는 프로퍼티까지 작성해 주어야 한다. PUT을 사용할 때 모든 필드를 입력하지 않으면 누락된 필드는 null로 정의된다. 반면 PATCH는 원하는 프로퍼티만 작성하면 된다.

 

// age를 수정한다고 했을 때,

// PUT의 경우 모든 필드를 입력
{
  "name": "minje",
  "age": "27",
}

// PATCH의 경우 age 필드만 입력
{
  "age": "27",
}

 

REST 특징

 

1. Uniform Interface

 

URI로 지정한 리로스에 대한 조작을 한정된 Interface로 수행한다.

 

www.example.com/user

user uri에 대하여 GET, POST, PUT, DELETE Method를 수행한다.

GET - 모든 user 정보 조회
POST - user 생성
PUT - 유저 정보 수정
DELETE - 유저 삭제

 

2. Stateless

 

작업 수행을 위한 상태를 갖지 않는다. 서버 쪽에서 클라이언트에 대한 상태(세션, 쿠키 정보)를 저장하지 않고 단순히 들어오는 요청을 처리한다.

 

3. 캐시

 

HTTP 표준을 그대로 사용해 HTTP가 제공하는 캐싱을 지원한다. 예를 들어 공통 바닥글/머리글 이미지가 있는 경우 페이지 이동시마다 새로 요청을 하는 것은 비효율적이다. 이때 첫 번째 응답 후 이미지를 캐싱을 해두고 이미지를 사용하면 요청을 매번 보내지 않아도 된다.

 

4. 자체 표현 구조

 

REST API 메세지만으로도 쉽게 이해할 수 있다.

 

5. Client - Server

 

서버는 API, 클라이언트는 인증 관리 구조로 역할을 구분해 서로 의존성을 줄인다.

 

6. 계층 구조

 

클라이언트는 API 서버만 호출한다. 서버는 다중 계층 설계가 가능하다. API Server는 비즈니스 로직을 처리하고 그 앞쪽에 암호화나 인증을 추가할 수 있다. 또한 Proxy, Gateway 같은 중간 매개체도 사용할 수 있다.

 


 

참고

 

REST - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 대한민국의 힙합 음악가에 대해서는 R-EST 문서를 참고하십시오. REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프

ko.wikipedia.org

 

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

REST API 제대로 알고 사용하기

meetup.toast.com

 

REST API | PoiemaWeb

REST(Representational State Transfer)는 HTTP/1.0과 1.1의 스펙 작성에 참여하였고 아파치 HTTP 서버 프로젝트의 공동설립자인 로이 필딩 (Roy Fielding)의 2000년 논문에서 처음 소개되었다. 발표 당시의 웹이 HTTP

poiemaweb.com

 

 

RESTful API란 무엇인가? - RESTful API 초보자 가이드 - AWS

 

aws.amazon.com

 

반응형