Flask

Chapter 2-1 REST API 개념 정리 및 해석

Chansman 2025. 4. 18. 10:17

📌 REST API 개념 정리 및 해석

1. REST API란?

**REST(Representational State Transfer)**는 클라이언트와 서버 간의 상호작용을 정의하는 아키텍처 스타일입니다. RESTful API는 주로 **자원(Resource)**을 중심으로 설계되며, 이를 HTTP 메소드(GET, POST, PUT, DELETE 등)를 사용하여 자원에 대해 **CRUD 작업(Create, Read, Update, Delete)**을 수행합니다.

핵심 개념

  • Representational: 자원 표현
  • State: 자원의 상태
  • Transfer: 클라이언트와 서버 간 데이터 전송

RESTful API 특징

  • 자원 식별: 자원은 URI를 통해 식별됩니다. 예: /users/{userId}
  • 자원 표현: 자원의 데이터는 JSON, XML 형식으로 클라이언트에게 전달됩니다.
  • 행위: 자원에 대해 GET, POST, PUT, DELETE와 같은 HTTP 메소드로 작업을 수행합니다.

REST API 탄생 배경

  • 모바일 앱, 웹, 스마트기기와 같은 다양한 클라이언트들이 등장하면서, 별도의 서버를 구축하지 않고 단일 API로 다양한 클라이언트와 통신할 수 있는 방식이 필요해졌습니다.
  • REST API는 문자열 기반의 데이터를 주고받을 수 있도록 설계되었고, 이는 기존의 웹 서버 방식보다 훨씬 효율적입니다.

2. REST API의 핵심 원칙

1) 자원 기반의 URL

REST API는 자원을 식별하기 위해 고유한 URL을 사용합니다.

  • 예시: /users/123 → 123번 사용자의 정보를 조회하는 URL
  • 자원이란 데이터베이스 레코드, 문서, 이미지 등 인터넷에서 접근할 수 있는 모든 것을 의미합니다.

2) 상태 없음 (Statelessness)

  • 상태 없음은 서버가 클라이언트의 상태를 저장하지 않는다는 의미입니다. 각 요청은 독립적이어야 하며, 세션 관리를 하지 않습니다.
  • 예시: 로그인 상태를 서버가 기억하지 않으며, 클라이언트는 매번 필요한 인증 정보를 요청에 포함해야 합니다.

3) 표준화된 메소드 사용

REST API는 HTTP 메소드를 사용하여 자원에 대한 다양한 작업을 수행합니다.

HTTP 메소드설명예시
GET 자원 조회 /users/1 → 사용자 정보 조회
POST 자원 생성 /users → 새로운 사용자 생성
PUT 자원 수정 /users/1 → 사용자 정보 수정
DELETE 자원 삭제 /users/1 → 사용자 삭제

4) 통신을 위한 표현 (Representation)

  • REST API는 자원의 표현을 통해 데이터를 클라이언트와 서버 간에 주고받습니다. 일반적으로 JSON 형식으로 데이터가 표현됩니다.
  • 예시: 사용자 정보는 JSON 형식으로 전달될 수 있습니다.

3. REST API의 구성 요소

REST API는 크게 자원(Resource), HTTP 메소드(Method), 표현(Representation) 세 가지 요소로 구성됩니다.

1) 자원 (Resource)

  • 자원은 URL을 통해 식별됩니다. 예를 들어, /feeds/:feed_id와 같은 URI를 사용하여 데이터를 요청합니다.

2) HTTP 메소드 (Method)

  • REST API는 POST, GET, PUT, DELETE와 같은 HTTP 메소드를 사용하여 자원에 대한 작업을 수행합니다.
    • GET: 자원의 조회
    • POST: 자원의 생성
    • PUT: 자원의 수정
    • DELETE: 자원의 삭제

3) 표현 (Representation)

  • 서버에서 클라이언트로 데이터를 전달할 때 JSON, XML, Text 등의 형식을 사용합니다. 가장 많이 사용되는 형식은 JSON입니다.

4. REST API 해석 연습

게시글 API 예시

URLHTTP 메소드작업
/feeds/1 GET ID가 1인 게시글 데이터를 조회
/feeds/1 POST ID가 1인 게시글을 생성
/feeds/1 PUT ID가 1인 게시글을 수정 (업데이트)
/feeds/1 DELETE ID가 1인 게시글을 삭제
/feeds/all GET 모든 게시글을 조회 (페이지네이션 등)
/myinfo GET 내 정보 조회
/myinfo PUT 내 정보 수정
/myinfo DELETE 내 계정 탈퇴

인스타그램 API 예시

작업HTTP 메소드URL 예시설명
사용자 프로필 조회 GET /users/{username} 특정 사용자의 프로필을 조회
게시물 목록 조회 GET /posts 모든 게시물 목록을 조회
새 게시물 작성 POST /posts 새 게시물을 생성
게시물 수정 PUT /posts/{post_id} 특정 게시물을 수정
게시물 삭제 DELETE /posts/{post_id} 특정 게시물을 삭제
댓글 목록 조회 GET /posts/{post_id}/comments 특정 게시물의 댓글 목록을 조회
댓글 작성 POST /posts/{post_id}/comments 특정 게시물에 댓글을 작성
팔로우 POST /users/{username}/follow 특정 사용자를 팔로우
언팔로우 DELETE /users/{username}/follow 특정 사용자를 언팔로우

이 API 예시들은 REST API의 자원, 메소드, 표현을 명확히 보여주며, 다양한 자원에 대해 CRUD 작업을 어떻게 처리할 수 있는지 설명합니다.