REST API

Yeji·2023년 9월 13일
0

API (Application Programming Interface)

애플리케이션이 서로 정보를 교환하고 통신할 수 있도록 하는 규칙

웹 개발을 예로 들면, 클라이언트에서는 필요한 정보를 요청하고, 서버는 그에 대한 응답을 반환한다. 이 요청 - 응답의 다리가 되어주는 것이 API다.

즉, 고유한 기능을 가진 소프트웨어가 서로 어떻게 통신할 것인지 그 규칙을 정의하는 방법, 또는 그 규칙 자체를 API라고 할 수 있다.

API를 설계한다는 것은 클라이언트와 서버가 어떤 방식으로 데이터를 주고 받을지 규칙을 정한다는 뜻이다.


RESTful API를 살펴보기 전에 REST를 알아보자.

1. 배경

REST란 개념은 로이 필딩(Roy Fielding)의 논문에서 처음 등장했다.

로이 필딩은 HTTP 1.0과 1.1의 표준화에 기여했던 사람 중 한명인데, HTTP 프로토콜의 설계에 맞게 API를 설계하고 웹의 장점을 최대한 이용하자는 취지로 REST 아키텍쳐를 발표했다.

2. REST (Representational State Transfer)

2-1. REST 정의

HTTP 프로토콜을 기반으로 하는 웹 서비스 아키텍쳐로, URI를 통해 자원을 명시하고 HTTP 메서드를 통해 해당 자원을 처리하는 것을 말한다.

[URI]
특정 리소스를 식별하는 통합 자원 식별자(Uniform Resource Identifier)를 의미한다.
웹 기술에서 자원를 식별하는 고유한 문자열이다.

REST 아키텍쳐는 두 가지 특징을 만족해야 한다.

1. URI는 정보의 자원을 표현해야 한다.

자원의 이름은 명사를 사용해야 하며, 행위가 들어가선 안 된다.

# bad
GET /getUser/1

# good
GET /user/2

2. 자원에 대한 행위는 HTTP Method로 표현한다.

# bad
GET /delete/user/1

# good
DELETE /user/1

2-2. REST 구성요소

REST는 자원(Resource), 행위(Verb), 표현(Representations)으로 구성된다.

자원 - URI
행위 - HTTP 메서드
표현 - HTTP 요청 헤더 ( 자원에 대한 행위의 내용)

덕분에 REST 아키텍쳐를 기반으로 설계된 API는 API 자체만으로 어떤 역할을 하는지 쉽게 알 수 있다.

2-3. HTTP 메서드

주로 5가지의 메서드를 사용해 자원에 대한 행위를 정의한다.

GET

  • payload 없음
  • 리소스 조회

POST

  • payload 있음
  • 리소스 생성

PUT

  • payload 있음
  • 리소스 전체 교체
  • 빈 정보는 null 값으로 들어감

PATCH

  • payload 있음
  • 리소스 일부 수정
  • 빈 정보는 기존 정보로 들어감

DELETE

  • payload 없음
  • 리소스 삭제

2-4. HTTP 상태 코드

클라이언트가 서버에 보낸 요청에 대한 결과를 나타내는 세자리 숫자다.

2XX 성공

3XX 리다이렉트

4XX 클라이언트 에러

400 Bad Request : 클라이언트 요청 자체가 부적절
401 Unauthorized : 인증되지 않은 사용자
403 Forbidden : 인증된 사용자지만 해당 자원에 대한 권한이 없을 때
404 Not Found : 요청된 자원이 존재하지 않을 때

5XX 서버 에러

3. RESTful API

3-1. RESTful API 정의

앞서 알아본 REST의 설계 원칙을 따라 만들어진 API를 RESTful API라고 한다.

HTTP 프로토콜을 기반으로 하는 웹 서비스 아키텍쳐인 REST 패턴을 따라 설계된 것이 RESTful API다.
즉, URI를 통해 자원을 명시하고 HTTP 메서드를 통해 해당 자원을 처리하는 원칙에 따라 작성된 API를 RESTful API라고 한다.

3-2. RESTful API 장단점

장점

  • HTTP 표준 프로토콜을 따르는 모든 플랫폼에서 사용 가능하다.
  • REST API 메세지가 의도하는 바를 명확하게 나타내므로(자원, 행위, 표현) API만 보고 자원과 자원에 대한 행위를 파악할 수 있다.
  • 서버와 클라이언트 역할을 명확하게 분리해 의존성을 줄인다.
    서버는 - API 제공
    클라이언트 - 사용자 인증 혹은 컨텍스트 관리(세션, 로그인 정보 등)

단점

  • 표준이 존재하지 않아 정의가 불분명하다.
  • 사용할 수 있는 메서드가 제한적이다.

참고

https://poiemaweb.com/js-rest-api
http://www.incodom.kr/REST
https://www.charlezz.com/?p=44767
https://www.webfx.com/web-development/glossary/http-status-codes/

profile
채워나가는 과정

0개의 댓글