내가 처음 REST API에 대해서 알게된건 지난 여름에 DRF프레임워크를 사용할 때였다. 

그때 REST API라는 것에 대한 명확한 정의를 알지 못했었는데 오늘 한번 주제로 다루어 보면서 공부해보면 좋을 거 같다는 생각을 한다. 

REST API란?

REST API는 Representational State Transfer의 약자로, 웹 기반 애플리케이션 간 상호작용을 돕는 설계 방식입니다. API(Application Programming Interface)를 통해 클라이언트와 서버 간의 데이터를 주고받을 때 RESTful 원칙을 따릅니다.

주요 특징으로는 다음과 같습니다.

  • 리소스 기반: 모든 데이터(사용자, 게시글 등)를 리소스로 간주.
  • HTTP 메서드 사용: CRUD 동작을 HTTP 메서드로 표현.
    • GET: 리소스 조회
    • POST: 리소스 생성
    • PUT/PATCH: 리소스 수정
    • DELETE: 리소스 삭제
  • URI 설계: 리소스 경로는 직관적이고 의미 있게 작성.
    • 예: /users/123 (ID가 123인 사용자 정보)

REST의 6가지 설계 원칙

RESTful API를 설계할 때 따라야 하는 6가지 원칙도 중요합니다.

  1. Uniform Interface: 일관된 인터페이스 설계.
    • 각 엔드포인트가 동일한 방식으로 작동해야 함.
  2. Stateless: 상태 비유지.
    • 서버는 클라이언트 상태를 저장하지 않으며, 모든 요청은 독립적.
  3. Cacheable: 응답은 캐시 가능.
    • 클라이언트는 서버의 응답을 캐싱하여 성능 최적화.
  4. Client-Server Architecture: 클라이언트와 서버는 독립적으로 설계.
  5. Layered System: 계층화된 시스템.
    • 중간 서버(로드 밸런서, 프록시 등)를 사용할 수 있음.
  6. Code on Demand (Optional): 필요 시 클라이언트에서 코드를 실행.
    • 예: 자바스크립트 파일 제공.

 

REST API의 작동 방식

예시: 블로그 포스트 API

  • Base URL: https://api.myblog.com
  • 엔드포인트:
    • GET /posts → 모든 포스트 조회
    • GET /posts/1 → 특정 포스트(ID: 1) 조회
    • POST /posts → 새 포스트 생성
    • PUT /posts/1 → 특정 포스트 수정
    • DELETE /posts/1 → 특정 포스트 삭제

HTTP 요청과 응답

요청 예시 (POST /posts):

POST /posts HTTP/1.1
Host: api.myblog.com
Content-Type: application/json

{
  "title": "REST API란 무엇인가?",
  "content": "REST API에 대해 알아봅시다!"
}

응답 예시:

HTTP/1.1 201 Created
Content-Type: application/json

{
  "id": 101,
  "title": "REST API란 무엇인가?",
  "content": "REST API에 대해 알아봅시다!",
  "created_at": "2024-12-11T08:30:00Z"
}

REST API의 장단점

장점:

  • 직관적이고 간단함: HTTP 메서드와 URI를 사용하므로 쉽게 이해 가능.
  • 확장성: 클라이언트와 서버가 독립적이라 확장에 유리.
  • 플랫폼 독립성: JSON, XML 등 다양한 포맷 지원.

단점:

  • 엄격하지 않은 표준: RESTful API 구현 방식이 개발자마다 달라질 수 있음.
  • 복잡한 요청 시 처리 부담: 상태 비유지 원칙으로 인해 요청마다 필요한 데이터를 모두 포함해야 함.

REST와 RESTful의 차이

  • REST는 아키텍처 스타일이고, RESTful은 REST 원칙을 준수한 시스템을 의미합니다.
  • 모든 REST API가 RESTful한 것은 아닙니다. URI 설계나 상태 비유지 원칙 등을 어길 수 있기 때문이죠.

REST API 설계 시 주의할 점

  1. 명확하고 직관적인 URI:
    • 좋음: /users/123/posts
    • 나쁨: /getUserPosts?id=123
  2. 적절한 HTTP 상태 코드 사용:
    • 200: 성공
    • 201: 리소스 생성
    • 404: 리소스 없음
    • 500: 서버 오류
  3. 에러 처리:
    • 명확하고 일관된 에러 메시지 제공.
    • 예: { "error": "Post not found" }

실제 프로젝트에서 REST API 사용하기

  • Postman이나 cURL로 테스트하기: API를 직접 호출해보고 응답 확인.
  • Swagger와 같은 문서화 도구 사용: 개발자 간 협업을 위한 문서화.
  • JWT와 함께 보안 강화: 인증 및 권한 부여에 토큰 기반 접근 제어 사용.

 

+ Recent posts