초보도 쉽게 이해하는 REST API 구조

REST API (Representational State Transfer Application Programming Interface)**는 웹 서비스에서 데이터를 주고받기 위해 사용하는 가장 표준적인 통신 규약이자 아키텍처 스타일입니다. 쉽게 말해, 인터넷을 통해 서버와 클라이언트(앱 또는 웹사이트)가 데이터를 효율적이고 일관된 방식으로 주고받기 위한 규칙들의 집합이라고 이해할 수 있습니다.

REST API는 마치 우리가 특정 주소에 가서 정해진 방법으로 소통하는 방식과 같습니다.


1. REST의 핵심 요소: 자원(Resource)

REST API에서 가장 중요한 개념은 **자원(Resource)**입니다. 자원은 서버가 관리하는 모든 데이터나 객체를 의미하며, 각 자원은 고유한 **URI(Uniform Resource Identifier)**를 가집니다.

자원(Resource)의 정의

  • 비유: 자원은 레스토랑의 **’메뉴판에 있는 음식’**과 같습니다.
  • 예시:
    • 사용자 정보: /users
    • 특정 게시글: /posts/101
    • 상품 목록: /products

URI (Uniform Resource Identifier)

  • 역할: 자원을 구별하는 고유한 식별자입니다. REST에서는 URI가 자원을 명확하게 표현하는 데 중점을 둡니다.
  • 규칙: URI는 명사(Noun)를 사용하고, 동사(Verb)를 사용하지 않습니다. (예: GET /users는 O, GET /get-users는 X)

2. 통신 방법: HTTP 메서드 (Method)

클라이언트는 자원에 대해 어떤 작업을 하고 싶은지 **HTTP 메서드(동사)**를 통해 서버에 전달합니다. 이 메서드는 자원에 대한 기본적인 CRUD (Create, Read, Update, Delete) 작업에 대응됩니다.

HTTP 메서드 (동사)CRUD 작업서버가 하는 일 (비유: 레스토랑 주문)
GETRead (조회)해당 자원을 가져옵니다. (메뉴를 주세요)
POSTCreate (생성)새로운 자원을 생성합니다. (새로운 주문을 추가합니다)
PUT/PATCHUpdate (수정)해당 자원을 수정합니다. (메뉴를 변경/일부 수정합니다)
DELETEDelete (삭제)해당 자원을 제거합니다. (주문을 취소합니다)

3. 데이터 형식: 표현(Representation)

클라이언트가 서버로부터 자원을 요청하면, 서버는 그 자원의 **’표현(Representation)’**을 전달합니다. 즉, 자원 자체를 보내는 것이 아니라, 자원의 상태를 나타내는 데이터 형식을 보내는 것입니다.

JSON 형식 (가장 일반적)

  • 형식: REST API에서는 주로 JSON(JavaScript Object Notation) 형식을 사용합니다. JSON은 가볍고 사람이 읽기 쉬우며, 웹 환경에서 데이터를 교환하는 데 최적화되어 있습니다.
  • 예시: /users/1에 대한 GET 요청 응답

JSON

{
  "id": 1,
  "username": "user_a",
  "email": "user.a@example.com"
}

4. 무상태성 (Statelessness): 독립적인 통신

REST API의 중요한 특징 중 하나는 **무상태성(Statelessness)**입니다.

  • 정의: 서버는 클라이언트로부터 요청을 받을 때, 이전 요청에서 어떤 일이 있었는지 기억하지 않습니다.
  • 작동 방식: 모든 요청은 그 요청을 처리하는 데 필요한 모든 정보(인증 정보 등)를 독립적으로 포함해야 합니다.
  • 이점: 서버는 수많은 클라이언트의 상태를 기억할 필요가 없으므로 부하가 줄어들고, 확장성이 높아져 대규모 서비스 운영에 매우 유리합니다.

5. REST API 구조의 통신 흐름

REST API를 통한 통신은 다음과 같은 순서로 이루어집니다.

  1. 클라이언트의 요청: 스마트폰 앱이 사용자 목록을 가져오기 위해 서버에 GET /users 요청을 보냅니다.
  2. 서버의 자원 식별: 웹 서버는 요청된 URI(/users)와 메서드(GET)를 확인하여, ‘사용자 목록’ 자원에 대한 조회 요청임을 파악합니다.
  3. 데이터베이스 연동: 서버는 DB 서버에 접속하여 사용자 목록 데이터를 조회합니다.
  4. JSON 데이터 생성: 조회된 데이터를 JSON 형식의 표현으로 만듭니다.
  5. 응답 전송: 서버는 **HTTP 상태 코드(예: 200 OK)**와 함께 JSON 데이터를 클라이언트에게 반환합니다.
  6. 클라이언트의 처리: 클라이언트는 받은 JSON 데이터를 앱 화면에 표시합니다.

REST API는 이러한 일관된 구조와 규칙 덕분에 어떤 언어나 플랫폼에서도 쉽게 데이터를 통합하고 서비스를 확장할 수 있도록 돕습니다.

댓글 남기기