Post

Django: RESTful API와 JSON에 대한 이해

Django를 활용한 RESTful API 설계와 JSON 데이터 교환에 대한 이해를 돕는 가이드.

Django: RESTful API와 JSON에 대한 이해

01. RESTful API

API란?

API는 “Application Programming Interface”의 약자로, 어플리케이션과 프로그래밍적으로 소통하는 방법을 의미합니다. 이를 통해 어플리케이션은 명령어를 전달하거나 데이터를 주고받으며 기능을 수행할 수 있습니다.

  • CLI (Command Line Interface): 명령줄을 통해 소통하는 방식
  • GUI (Graphic User Interface): 그래픽 인터페이스로 사용자와 소통하는 방식
  • API (Application Programming Interface): 프로그래밍을 통해 어플리케이션과 소통하는 방식

API의 활용 예시

API는 소프트웨어 ↔ 소프트웨어, 기계 ↔ 인간 간의 소통을 가능하게 합니다. 예를 들어:

  • 미세먼지 정보를 제공하는 웹 앱기상청 API
  • 카카오 로그인을 사용하는 웹 앱카카오 API
  • 유튜브 영상을 표시하는 웹 앱유튜브 API

이처럼 API는 서로 약속된 형식으로 데이터를 주고받아야 하며, 이러한 약속은 소통의 규칙이 됩니다.

RESTful API란?

REST는 “Representational State Transfer”의 약자로, 웹 기반의 소프트웨어 설계 방식을 나타냅니다. RESTful API는 이러한 REST 원칙을 따라 설계된 API를 의미합니다.

REST의 핵심 원칙

  1. 클라이언트-서버 구조:
    • 클라이언트는 사용자 인터페이스를 담당하고, 서버는 데이터 및 로직을 관리합니다.
  2. 무상태성:
    • 요청 간 상태를 저장하지 않습니다. 각 요청은 독립적이며 필요한 정보를 모두 포함해야 합니다.
  3. 캐시 가능성:
    • 응답은 캐싱 가능해야 하며, 이를 통해 성능을 향상시킬 수 있습니다.
  4. 일관된 인터페이스:
    • 리소스는 URI로 명확히 정의되고, HTTP 메서드(GET, POST, PUT, DELETE 등)가 행위를 나타냅니다.
  5. 계층화 시스템:
    • 클라이언트와 서버 간의 통신에는 프록시나 로드 밸런서 같은 중간 계층이 포함될 수 있습니다.

RESTful API의 구조

  • 자원(Resource):
    • URI를 통해 식별됩니다. 예: /users, /articles/1
  • HTTP 메서드:
    • GET: 리소스 조회
    • POST: 리소스 생성
    • PUT: 리소스 수정 (전체 업데이트)
    • PATCH: 리소스 수정 (부분 업데이트)
    • DELETE: 리소스 삭제
  • URI 설계의 규칙:
    • URI는 명사로 표현합니다. 동사는 HTTP 메서드로 표현합니다.
      1
      2
      3
      4
      
      POST /articles/      # 새로운 article 생성
      GET  /articles/      # 모든 article 조회
      GET  /articles/1     # 특정 article 조회
      DELETE /articles/1   # 특정 article 삭제
      

RESTful API의 장점

  • 설계 규칙을 따를 경우 직관적인 사용이 가능합니다.
  • 상태 코드(200, 404 등)와 메서드(GET, POST 등)를 조합하여 결과를 추론할 수 있습니다.
  • 시스템 간의 통신을 간단하고 효율적으로 만들 수 있습니다.

02. JSON

JSON이란?

JSON(JavaScript Object Notation)은 데이터를 표현하고 교환하는 가볍고 간단한 형식입니다. 사람도 읽기 쉽고, 기계도 분석하기 쉬운 구조를 가지고 있습니다.

JSON의 특징

  1. 텍스트 기반:
    • 사람이 읽고 쓰기 쉬운 텍스트 형식입니다.
  2. 키-값 쌍:
    • 데이터를 key-value 구조로 저장합니다. 파이썬의 dict와 유사합니다.
  3. 언어 독립적:
    • 대부분의 프로그래밍 언어에서 JSON을 다룰 수 있는 라이브러리를 제공합니다.
  4. 경량성:
    • XML보다 데이터 크기가 작아 전송 속도가 빠릅니다.

JSON의 기본 구조

  1. 객체(Object):
    • 중괄호 {}로 묶이며, 키-값의 집합으로 구성됩니다.
      1
      2
      3
      4
      5
      
      {
        "name": "Alice",
        "age": 25,
        "isStudent": false
      }
      
  2. 배열(Array):
    • 대괄호 []로 묶이며, 순서가 있는 값의 목록을 가집니다.
      1
      
      ["Python", "JavaScript", "C++"]
      
  3. 값(Value):
    • 문자열, 숫자, 불리언, 객체, 배열, null 등을 포함할 수 있습니다.
      1
      2
      3
      4
      5
      
      {
        "id": 1,
        "tags": ["API", "JSON"],
        "isActive": true
      }
      

JSON 사용 예시

1
2
3
4
5
6
7
8
{
    "user": {
        "id": 1,
        "name": "John Doe",
        "email": "john.doe@example.com",
        "skills": ["Python", "Django", "React"]
    }
}

JSON의 장점

  • 가독성이 좋습니다.
  • XML보다 경량화되어 있어 속도가 빠릅니다.
  • 다양한 프로그래밍 언어에서 쉽게 사용할 수 있습니다.

RESTful API와 JSON의 연관성

RESTful API는 JSON을 주로 데이터 교환 포맷으로 사용합니다. JSON은 RESTful API의 요청과 응답 데이터를 표현하는 데 최적화되어 있습니다.

RESTful API와 JSON 예제

  1. GET 요청:
    • 요청: GET /users/1
    • 응답(JSON):
      1
      2
      3
      4
      5
      
      {
          "id": 1,
          "name": "John Doe",
          "email": "john.doe@example.com"
      }
      
  2. POST 요청:
    • 요청: POST /users
    • 전송 데이터(JSON):
      1
      2
      3
      4
      
      {
          "name": "Alice",
          "email": "alice@example.com"
      }
      
    • 응답(JSON):
      1
      2
      3
      4
      5
      
      {
          "id": 2,
          "name": "Alice",
          "email": "alice@example.com"
      }
      

RESTful API와 JSON은 현대 웹 개발에서 필수적인 요소로, 클라이언트-서버 간 효율적인 데이터 교환을 가능하게 합니다. 이러한 기술을 이해하면 더 나은 설계와 개발이 가능합니다.

This post is licensed under CC BY 4.0 by the author.