Flask로 RESTful API 엔드포인트 만들기
안녕하세요! "소프트웨어 공장"에 오신 것을 환영합니다. 오늘은 Flask를 사용하여 RESTful API 엔드포인트를 만드는 방법에 대해 알아보겠습니다. Flask는 간단하고 유연한 Python 웹 프레임워크로, RESTful API를 구현하기에 매우 적합합니다.
RESTful API란?
RESTful API는 웹 서비스를 설계하는 방식 중 하나로, HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 자원을 처리합니다. 각 메서드는 특정 작업(CRUD - 생성, 조회, 수정, 삭제)을 나타냅니다.
Flask 설치
먼저 Flask를 설치해야 합니다. 아래 명령어를 사용하여 설치할 수 있습니다.
pip install flask flask-restful
flask-restful
은 Flask에서 RESTful API를 쉽게 구현할 수 있도록 도와주는 확장 라이브러리입니다.
프로젝트 구조
RESTful API를 개발할 때 권장하는 간단한 프로젝트 구조는 다음과 같습니다:
project/
├── app.py
└── requirements.txt
Flask 앱 생성
이제 app.py
파일을 생성하고 기본 Flask 앱을 설정해 보겠습니다.
from flask import Flask
from flask_restful import Api, Resource
app = Flask(__name__)
api = Api(app)
class HelloWorld(Resource):
def get(self):
return {"message": "Hello, World!"}
api.add_resource(HelloWorld, '/')
if __name__ == "__main__":
app.run(debug=True)
위 코드는 간단한 "Hello, World!" API를 구현한 것입니다. HelloWorld
클래스는 Flask-RESTful에서 API 리소스를 나타내며, HTTP GET 요청에 응답합니다.
CRUD API 만들기
이제 CRUD(Create, Read, Update, Delete) 기능을 제공하는 간단한 RESTful API를 만들어 보겠습니다. 예제로 "사용자 관리 API"를 만들어 보겠습니다.
1. 데이터 구조 설정
우리는 간단한 메모리 내 데이터베이스로 Python 딕셔너리를 사용할 것입니다.
users = {}
2. 사용자 리소스 생성
사용자 정보를 관리하는 리소스를 정의합니다.
class User(Resource):
def get(self, user_id):
user = users.get(user_id)
if user:
return user, 200
return {"message": "User not found"}, 404
def post(self, user_id):
if user_id in users:
return {"message": "User already exists"}, 400
users[user_id] = {
"name": f"User {user_id}",
"age": 25
}
return users[user_id], 201
def put(self, user_id):
users[user_id] = {
"name": f"Updated User {user_id}",
"age": 30
}
return users[user_id], 200
def delete(self, user_id):
if user_id in users:
del users[user_id]
return {"message": "User deleted"}, 200
return {"message": "User not found"}, 404
3. 리소스 등록
이제 위의 User
리소스를 API에 등록합니다.
api.add_resource(User, '/user/<string:user_id>')
이렇게 하면 /user/<user_id>
경로에서 사용자 관련 작업을 수행할 수 있습니다.
전체 코드
최종 코드는 다음과 같습니다:
from flask import Flask
from flask_restful import Api, Resource
app = Flask(__name__)
api = Api(app)
users = {}
class User(Resource):
def get(self, user_id):
user = users.get(user_id)
if user:
return user, 200
return {"message": "User not found"}, 404
def post(self, user_id):
if user_id in users:
return {"message": "User already exists"}, 400
users[user_id] = {
"name": f"User {user_id}",
"age": 25
}
return users[user_id], 201
def put(self, user_id):
users[user_id] = {
"name": f"Updated User {user_id}",
"age": 30
}
return users[user_id], 200
def delete(self, user_id):
if user_id in users:
del users[user_id]
return {"message": "User deleted"}, 200
return {"message": "User not found"}, 404
api.add_resource(User, '/user/<string:user_id>')
if __name__ == "__main__":
app.run(debug=True)
테스트 방법
Postman이나 curl을 사용하여 API를 테스트할 수 있습니다.
1. 사용자 생성
curl -X POST http://127.0.0.1:5000/user/1
2. 사용자 조회
curl http://127.0.0.1:5000/user/1
3. 사용자 수정
curl -X PUT http://127.0.0.1:5000/user/1
4. 사용자 삭제
curl -X DELETE http://127.0.0.1:5000/user/1
결론
이번 포스팅에서는 Flask를 사용하여 간단한 RESTful API를 만드는 방법을 배웠습니다. Flask-RESTful을 활용하면 API 설계를 간소화하고 코드의 가독성을 높일 수 있습니다.
'Python > Python Flask' 카테고리의 다른 글
Flask 사용자 인증: Flask-Login으로 사용자 인증 구현하기 (0) | 2025.09.10 |
---|---|
Flask로 RESTful API와 JSON 데이터 처리하기 (0) | 2025.09.09 |
Flask RESTful API 기본 개념 (0) | 2025.09.07 |
Flask에서 폼 처리와 파일 업로드 기능 구현하기 (0) | 2025.09.06 |
Flask와 폼 처리 기법: 폼 유효성 검사 및 사용자 입력 처리 (0) | 2025.09.05 |