RESTful은 웹에서 데이터를 주고받는 방식을 정의한 설계 원칙입니다.
정식 명칭은 Representational State Transfer이고, 이를 잘 따르는 API를 RESTful API라고 부릅니다.
RESTful은 단순히 기술이 아니라, **“어떻게 자원을 주고받을지에 대한 약속된 규칙”**이라고 보면 이해하기 쉽습니다.
파이썬에서는 Flask, FastAPI, Django REST Framework 같은 프레임워크를 사용해 RESTful API를 간편하게 만들 수 있습니다.
서버가 제공하는 정보나 데이터 단위를 의미합니다.
예를 들어 사용자, 게시글, 상품 등은 각각 하나의 자원입니다.
자원은 고유한 URL(또는 URI)로 식별됩니다.
/users, /products/123RESTful은 동작을 URL이 아닌 HTTP 메서드로 구분합니다.
즉, 같은 URL이라도 어떤 요청 방식이냐에 따라 처리 내용이 달라집니다.
| 메서드 | 의미 | 예시 기능 |
|---|---|---|
GET | 데이터 조회 | 사용자 목록 보기 |
POST | 데이터 생성 | 새 사용자 등록 |
PUT | 데이터 전체 수정 | 사용자 정보 수정 |
PATCH | 데이터 일부 수정 | 일부 정보만 수정 |
DELETE | 데이터 삭제 | 사용자 삭제 |
파이썬에서는 RESTful 설계를 쉽게 적용할 수 있습니다.
아래는 Flask를 활용한 간단한 예시입니다.
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route('/users', methods=['GET'])
def get_users():
return jsonify([{'id': 1, 'name': 'Alice'}])
@app.route('/users', methods=['POST'])
def create_user():
data = request.get_json()
return jsonify({'message': 'User created', 'user': data}), 201
if __name__ == '__main__':
app.run()
/users에 GET 요청: 사용자 목록 반환/users에 POST 요청: 사용자 등록FastAPI나 Django REST Framework도 매우 유사한 방식으로 RESTful API를 개발할 수 있습니다.
| 항목 | 예시 |
|---|---|
| 자원 중심 URL | /users, /products/10/comments |
| HTTP 메서드 분리 | GET, POST, PUT, DELETE 등을 상황에 따라 사용 |
| JSON 응답 | { "id": 1, "name": "Alice" } |
| 일관된 응답 구조 | 항상 같은 구조로 응답(JSON, 상태코드 포함) |
RESTful은 웹 기반 API를 설계하는 가장 널리 쓰이는 표준 방식입니다.
파이썬에서는 Flask, FastAPI, Django REST Framework 등 다양한 도구로 쉽게 구현할 수 있으며,
자원 중심 URL + HTTP 메서드 활용 + 무상태성 + 일관된 응답이 RESTful의 핵심입니다.
이 개념을 잘 이해하고 실전에 적용하면 유지보수성과 확장성이 뛰어난 API를 만들 수 있습니다.