Flask-RESTful은 Python 웹 프레임워크인 Flask의 확장판으로, RESTful API를 쉽게 구현할 수 있는 도구입니다. 이번 포스트에서는 Flask-RESTful을 사용하여 CRUD 기능(Create, Read, Update, Delete)을 구현하는 방법에 대해 알아보겠습니다.
필요한 패키지 설치하기
먼저 Flask-RESTful 패키지를 설치해야 합니다. 아래의 명령어를 사용하여 패키지를 설치하세요.
pip install flask-restful
또한 Flask 패키지도 설치되어있어야 합니다.
pip install flask
Flask-RESTful 리소스 생성하기
Flask-RESTful는 리소스(Resource)라는 개념을 통해 API를 관리합니다. 각각의 리소스는 자신의 엔드포인트(url)와 HTTP 메서드(method)를 가지고 있습니다. 예를 들어, /users
엔드포인트에 대한 GET 요청은 모든 사용자 정보를 반환하는 역할을 할 수 있습니다.
from flask import Flask
from flask_restful import Api, Resource
app = Flask(__name__)
api = Api(app)
class UsersResource(Resource):
def get(self):
# 사용자 정보 조회 로직 구현
return {'users': 'user1, user2, user3'}
api.add_resource(UsersResource, '/users')
if __name__ == '__main__':
app.run(debug=True)
위의 코드에서는 UsersResource
라는 클래스를 생성하고, get
메서드를 구현하여 사용자 정보 조회 로직을 처리하도록 했습니다. 또한, api.add_resource()
함수를 사용하여 UsersResource
클래스를 /users
엔드포인트에 매핑시켰습니다.
CRUD 기능 구현하기
이제 CRUD 기능을 구현해보겠습니다. 아래의 코드는 사용자 생성, 조회, 수정, 삭제 기능을 포함하고 있습니다.
from flask import Flask, request
from flask_restful import Api, Resource, reqparse
app = Flask(__name__)
api = Api(app)
users = []
class UsersResource(Resource):
def get(self):
# 모든 사용자 정보를 반환
return {'users': users}
def post(self):
# 사용자 생성
parser = reqparse.RequestParser()
parser.add_argument('name', type=str, required=True, help='Name is required')
parser.add_argument('age', type=int, required=True, help='Age is required')
args = parser.parse_args()
user = {'name': args['name'], 'age': args['age']}
users.append(user)
return {'message': 'User created', 'user': user}, 201
class UserResource(Resource):
def get(self, user_id):
# 특정 사용자 정보를 반환
user = next((user for user in users if user['id'] == user_id), None)
if user:
return {'user': user}
else:
return {'message': 'User not found'}, 404
def put(self, user_id):
# 특정 사용자 정보를 수정
parser = reqparse.RequestParser()
parser.add_argument('name', type=str, required=True, help='Name is required')
parser.add_argument('age', type=int, required=True, help='Age is required')
args = parser.parse_args()
user = next((user for user in users if user['id'] == user_id), None)
if user:
user['name'] = args['name']
user['age'] = args['age']
return {'message': 'User updated', 'user': user}
else:
return {'message': 'User not found'}, 404
def delete(self, user_id):
# 특정 사용자 삭제
user = next((user for user in users if user['id'] == user_id), None)
if user:
users.remove(user)
return {'message': 'User deleted'}
else:
return {'message': 'User not found'}, 404
api.add_resource(UsersResource, '/users')
api.add_resource(UserResource, '/users/<int:user_id>')
if __name__ == '__main__':
app.run(debug=True)
위의 코드에서는 UsersResource
클래스는 모든 사용자 정보를 반환하고, UserResource
클래스는 특정 사용자에 대한 조회, 수정, 삭제 기능을 구현합니다. POST, PUT, DELETE 요청은 reqparse
패키지를 사용하여 요청 파라미터를 파싱합니다.
결론
이번 포스트에서는 Flask-RESTful을 사용하여 CRUD 기능을 구현하는 방법에 대해 알아보았습니다. Flask-RESTful은 간편한 API 개발을 위해 많은 기능과 도구를 제공하며, 이를 통해 개발자는 더 빠르게 RESTful API를 구축할 수 있습니다.
더 자세한 정보는 Flask-RESTful 공식 문서를 참고하세요.