thumbnail

RESTful API 에 대해 알아보자!

생성일2024. 10. 25.
태그
작성자Beomgu Jeon

RESTful API 에 대해 알아보자!

REST API 란?

소프트웨어 아키텍쳐 중 하나인 REST API는 Representational State Transfer 의 약자이다. 이는 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 것을 의미한다. 특히 REST의 경우 HTTP 프로토콜을 활용하기에 웹 개발 시 장점을 최대한 활용할 수 있는 아키텍처이다.
 

REST의 구성

REST는 크게 자원, 행위, 표현의 3가지로 나누어진다.
  1. 자원 (Resource) - URL
    1. 자원에는 고유한 리소스 식별자가 있고, 이는 서버에 있다. 이 자원을 구별하는 것을 바로 URI 라고 부른다.
  1. 행위 (Verb) - HTTP Method
    1. 행위는 자원이 어떠한 동작을 수행할 지를 나타내는 것으로, 대표적으로 GET, POST, PUT, DELETE 를 사용한다.
      • GET: 자원 조회
      • POST: 자원 생성
      • PUT: 자원 수정
      • DELETE: 자원 삭제
  1. 표현 (Representations)
    1. 클라이언트가 자원의 상태에 대한 조작을 요청하면 서버는 이에 대해 응답을 `JSON`, `XML` 등의 형태로 보내준다.

REST의 특징

REST는 아래의 6가지 특징을 가진다.
  1. Server-Client (서버/클라이언트 구조)
  1. Stateless (무상태성)
  1. Cacheable (캐시 처리 가능)
  1. Self-descriptiveness (자체 표현 구조)
  1. Layered System (계층화)
  1. Uniform Interface (인터페이스 일관성)
 

REST 장단점

장점

  • HTTP 프로토콜을 이용하므로 별도의 인프라 구축이 필요없다.
  • HTTP 프로토콜을 사용하는 플랫폼에서는 모두 사용 가능하다.
  • 서버와 클라이언트의 역할을 명확하게 분리한다.

단점

  • 표준이 존재하지 않아 별도로 정의가 필요하다.
  • HTTP 프로토콜에 의존적이다.
  • CRUD 4가지 형태의 메소드만 제공한다.
 

RESTful API 란?

HTTP와 URI를 이용하여 자원에 접근할 수 있도록 하는 애플리케이션 인터페이스이다. REST API 를 사용하여 개발한 서비스를 RESTful 하다고 할 수 있다.
 

RESTful API 개발 원칙

  1. 자원을 식별할 수 있어야 한다. 이 때 자원의 식별은 URI를 통해 한다.
  1. 행위는 HTTP 메소드를 통해 표현한다. GET, POST, PUT, DELETE 등이 사용된다.
  1. 메시지는 자기 서술적이어야 한다. 메시지 포맷과 HTTP 메소드를 통해 요청의 의도를 표현할 수 있어야 한다.
  1. 애플리케이션의 상태는 Hypermedia를 통해 관리한다. Hypermedia 링크를 통해 애플리케이션의 상태를 전환할 수 있어야 한다.
 

RESTful API 사용 사례

  • POST 블로그 포스팅 생성
    • Request
      • POST http://blog.com/post Body: { "post": { "title": "RESTful 에 대해 알아보자!", "contents": "REST API는 ...", "author": "Daniel", ... } }
    • Response
      • Status Code: 201 CREATED Content-Type: application/json { "errMsg": "Success" }
 
  • GET 블로그 포스팅 조회
    • Request
      • GET http://blog.com/post/1
    • Response
      • Status Code: 200 OK Content-Type: application/json "errMsg": "Success", "post": { "title": "RESTful 에 대해 알아보자!", "contents": "REST API는 ...", "author": "Daniel", ... }
 
  • PUT 블로그 포스팅 수정
    • Request
      • PUT http://blog.com/post/1 Body: { "post": { "title": "RESTful 에 대해 알아보자!(2)", "contents": "REST API는 ...", "author": "Daniel", ... } }
    • Response
      • Status Code: 200 OK Content-Type: application/json "errMsg": "Success"
 
  • DELETE 블로그 포스팅 삭제
    • Request
      • DELETE http://blog.com/post/1
    • Response
      • Status Code: 200 OK Content-Type: application/json "errMsg": "Success"
 

결론

지금까지 RESTful API 에 대해 알아보았다. 백엔드 개발자의 경우 REST 에 대한 이해는 필수적이라고 생각하고, 이를 잘 생각하고 지키면서 프로그래밍을 하는 것이 좋을 것 같다.