RESTful API

mangez_js·2024년 12월 26일

Study

목록 보기
32/47

1. REST의 기본 개념

  1. 자원(Resource)
  • REST에서 모든 것은 "자원"으로 표현됩니다.
  • 자원은 URI(Uniform Resource Identifier)를 통해 식별
    ex)
    https://api.example.com/users(사용자 자원)
    https://api.example.com/users/123 (특정 사용자 자원)
  1. 표현(Representation)
  • 자원은 여러 형태로 표현될 수 있다.
  • 일반적으로 JSON, XML, HTML 형식이 사용된다.
    ex) JSON 형식으로 사용자 데이터를 표현
{
  "id":123,
  "name":"mangez",
  "email":"mangez@example.com"
}
  1. HTTP 메서드(Method)
  • RESTful API는 자원에 대한 작업을 HTTP 메서드를 통해 정의한다.
    ∘ GET : 자원을 조회
    ∘ POST : 자원을 생성
    ∘ PUT : 자원을 수정 (전체 업데이트)
    ∘ PATCH : 자원을 수정 (부분 업데이트)
    ∘ DELETE : 자원을 삭제
  1. 상태 기반(Stateful 또는 Stateless)
  • REST는 Stateless를 지향합니다.
  • 클라이언트와 서버의 통신은 상태 정보를 저장하지 않으며, 요청은 독립적입니다.
  • 즉, 요청마다 필요한 모든 정보를 포함해야 합니다.

2. RESTful API의 특징

  1. 클라이언트-서버 구조
  • 클라이언트와 서버가 명확히 분리되어 있습니다.
  • 클라이언트는 사용자 인터페이스를 담당하고,
  • 서버는 데이터와 비즈니스 로직을 처리합니다.
  1. 무상태성(Statelessness)
  • 서버는 클라이언트의 상태를 저장하지 않습니다.
  • 각 요청은 독립적이며, 필요한 모든 정보를 포함해야 합니다.
  1. 캐시 기능(Cacheable)
  • HTTP의 캐싱 메커니즘을 활용하여 클라이언트 요청 및 서버 응답을 캐싱할 수 있습니다.
  • 이를 통해 성능이 향상됩니다.
  1. 일관된 인터페이스(Uniform Interface)
  • REST는 자원을 URI로 식별하고, HTTP 메서드를 사용하여 동작을 정의합니다.
    ex) GET /users, POST /users, PUT /users/123
  1. 계층화 구조(Layered System)
  • 클라이언트는 서버의 직접적인 정보를 알 필요가 없습니다.
    ex) 요청이 프록시, 로드 밸런서 등을 거쳐도 상관 없습니다.

3. RESTful API 설계 원칙

  1. 자원의 URI는 명사로 표현
  • URI는 명사를 사용하여 자원을 식별합니다.
  1. HTTP 메서드의 올바른 사용
  • GET, POST, PUT, PATCH, DELETE를 의미이 맞게 사용합니다.
  1. 자원 간 관계 표현
  • ex) 특정 사용자의 주문 목록 GET /users/123/orders
  1. HTTP 상태 코드를 적절히 활용
  • 200 OK : 요청 성공
  • 201 Created : 자원 생성 성공
  • 204 No Content : 삭제 성공
  • 400 Bad Request : 잘못된 요청
  • 401 Unauthorized : 인증 실패
  • 404 Not Found : 자원을 찾을 수 없음
  • 500 Internal Server Error : 서버 오류
  1. 응답에 메시지 바디 포함
  • 응답 데이터는 JSON이나 XML과 같은 표준 형식을 사용합니다.

4. RESTful API의 장점

  1. 간결함과 직관성
  • HTTP 프로토콜은 기반으로 설계되어 쉽게 이해하고 사용할 수 있습니다.
  1. 유연성
  • JSON, XML 등 다양한 데이터 형식을 지원합니다.
  1. 확장성
  • Stateless 설계 덕분에 서버 확장이 용이합니다.
  1. 표준화
  • 표준 HTTP 메서드와 상태 코드를 사용하여 일관성을 유지합니다.

5. RESTful API의 단점

  1. 복잡한 요청
  • 매우 대규모 데이터나 복잡한 관계를 처리하기 어렵습니다.
  1. 실시간 데이터 전송 부족
  • 웹소켓처럼 실시간 통신에 최적화되어 있지 않습니다.
  1. 오버헤드
  • Stateless 특성상 요청마다 필요한 데이터를 포함해야 하므로 네트워크 오버헤드가 발생할 수 있습니다.

0개의 댓글