CS

REST API

baek-dev 2025. 1. 3. 18:51

웹에서 자원을 관리하고 상호작용하는 표준을 정의한 것

 

기본개념

1. 자원(Resource)

  • 자원은 시스템이 제공하는 데이터 또는 기능
  • REST에서 자원은 URI로 표현된다
    • 예 : https://api.example.com/users

2. 행위(Verb)

  • 클라이언트가 자원을 어떻게 처리할지 HTTP 메서드를 통해 명시한다
    • GET : 자원을 조회
    • POST : 자원을 생성
    • PUT : 자원을 수정
    • DELETE : 자원을 삭제

3. 표현(Representation)

  • 클라이언트와 서버가 자원에 대해 상호작용할 때, 자원의 표현을 교환한다
    • 예 : JSON, XML, HTML 등으로 데이터를 표현

4. 상태 무저장성(Stateless)

  • 서버는 클라이언트의 상태를 저장하지 않는다

각 요청은 독립적이며, 필요한 모든 정보를 요청에 포함해야 한다


특징

1. 클라이언트-서버 구조

  • 클라이언트는 사용자 인터페이스를 관리하고, 서버는 데이터를 관리한다
  • 서로 독립적으로 개발 및 확장이 가능

2. 무상태성(Stateless)

  • 요청 간에 클라이언트의 상태 정보를 유지하지 않는다
  • 요청마다 필요한 데이터를 모두 포함해야 한다

3. 캐시 가능(Cacheable)

  • 응답 데이터를 캐싱하여 네트워크 트래픽을 줄이고 성능을 향상시킨다

4. 통일된 인터페이스(Uniform Interface)

  • URI로 자원을 식별하고, HTTP 메서드로 동작을 명확히 표현한다

5. 계층화 시스템(Layered System)

  • 클라이언트는 직접 서버와 통신하거나 중간 계층(예: 로드 밸런서, 캐시 서버)을 거칠 수 있다

구성요소

1. HTTP 메서드

메서드 설명 예시
GET 자원 조회 GET /users - 사용자 목록 조회
POST 자원 생성 POST /users - 새 사용자 생성
PUT 자원 전체 수정 PUT /users/1 - ID 1 사용자 정보 수정
PATCH 자원 일부 수정 PATCH /users/1 - ID 1 사용자의 일부 수정
DELETE 자원 삭제 DELETE /users/1 - ID 1 사용자 삭제

 

2. URI

  • REST API에서 자원을 나타내는 경로
  • 형식 : https://api.example.com/{자원}/{자원 ID}
    • 예: https://api.example.com/users/123 

3. HTTP 상태 코드

코드 의미 설명
200 OK 요청 성공
201 Created 자원 생성 성공
400 Bad Request 잘못된 요청
401 Unauthorized 인증 실패
403 Forbidden 권한 없음
404 Not Found 자원 없음
500 Internal Server Error 서버 오류

장점

1. 확장성 : 클라이언트와 서버가 독립적으로 확장 가능

2. 유연성 : JSON, XML 등 다양한 포맷 지원

3. 표준화 : URI와 HTTP 메서드를 활용하여 직관적

4. 캐싱 : 응답 데이터를 캐시할 수 있어 성능 향상

단점

1. 무상태성의 부담 : 클라이언트가 상태 정보를 항상 포함해야 하므로, 데이터 크기가 커질 수 있음

2. 오버헤드 : REST는 HTTP를 기반으로 하므로 프로토콜 오버헤드가 있을 수 있음

3. 복잡한 응답 구조 : 대규모 데이터나 관계형 데이터는 표현하기 어려울 수 있음


예시

1. 사용자 목록 조회

요청 :

GET /users

응답 :

[
    {
        "id": 1,
        "name": "Alice"
    },
    {
        "id": 2,
        "name": "Bob"
    }
]

 

2. 새 사용자 생성

요청 :

POST /users
Content-Type: application/json

{
    "name": "Charlie"
}

응답 :

HTTP 201 Created

 

3. 사용자 삭제

요청 :

DELETE /users/1

응답 :

HTTP 204 No Content

 

 

 

 

출처 : ChatGPT

'CS' 카테고리의 다른 글

URI , URL  (0) 2025.01.11
레거시 소스  (0) 2025.01.05
HTTP 상태코드  (0) 2025.01.02
HTTP 메서드  (0) 2024.12.28
[CS] TDD  (1) 2024.12.13