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의 핵심 원칙
- 클라이언트-서버 구조:
- 클라이언트는 사용자 인터페이스를 담당하고, 서버는 데이터 및 로직을 관리합니다.
- 무상태성:
- 요청 간 상태를 저장하지 않습니다. 각 요청은 독립적이며 필요한 정보를 모두 포함해야 합니다.
- 캐시 가능성:
- 응답은 캐싱 가능해야 하며, 이를 통해 성능을 향상시킬 수 있습니다.
- 일관된 인터페이스:
- 리소스는 URI로 명확히 정의되고, HTTP 메서드(GET, POST, PUT, DELETE 등)가 행위를 나타냅니다.
- 계층화 시스템:
- 클라이언트와 서버 간의 통신에는 프록시나 로드 밸런서 같은 중간 계층이 포함될 수 있습니다.
RESTful API의 구조
- 자원(Resource):
- URI를 통해 식별됩니다. 예:
/users
,/articles/1
- URI를 통해 식별됩니다. 예:
- 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 삭제
- URI는 명사로 표현합니다. 동사는 HTTP 메서드로 표현합니다.
RESTful API의 장점
- 설계 규칙을 따를 경우 직관적인 사용이 가능합니다.
- 상태 코드(200, 404 등)와 메서드(GET, POST 등)를 조합하여 결과를 추론할 수 있습니다.
- 시스템 간의 통신을 간단하고 효율적으로 만들 수 있습니다.
02. JSON
JSON이란?
JSON(JavaScript Object Notation)은 데이터를 표현하고 교환하는 가볍고 간단한 형식입니다. 사람도 읽기 쉽고, 기계도 분석하기 쉬운 구조를 가지고 있습니다.
JSON의 특징
- 텍스트 기반:
- 사람이 읽고 쓰기 쉬운 텍스트 형식입니다.
- 키-값 쌍:
- 데이터를
key-value
구조로 저장합니다. 파이썬의dict
와 유사합니다.
- 데이터를
- 언어 독립적:
- 대부분의 프로그래밍 언어에서 JSON을 다룰 수 있는 라이브러리를 제공합니다.
- 경량성:
- XML보다 데이터 크기가 작아 전송 속도가 빠릅니다.
JSON의 기본 구조
- 객체(Object):
- 중괄호
{}
로 묶이며,키-값
의 집합으로 구성됩니다.1 2 3 4 5
{ "name": "Alice", "age": 25, "isStudent": false }
- 중괄호
- 배열(Array):
- 대괄호
[]
로 묶이며, 순서가 있는 값의 목록을 가집니다.1
["Python", "JavaScript", "C++"]
- 대괄호
- 값(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 예제
- GET 요청:
- 요청:
GET /users/1
- 응답(JSON):
1 2 3 4 5
{ "id": 1, "name": "John Doe", "email": "john.doe@example.com" }
- 요청:
- 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.