Flask는 Python 웹 프레임워크 중 하나로, 간단하고 유연한 구조를 가지고 있어 RESTful API를 개발하기에 적합합니다. 이번 포스트에서는 Flask를 사용하여 RESTful API를 개발하는 방법을 알아보겠습니다.
필수 설치 사항
아래의 명령어를 사용하여 Flask를 설치합니다:
pip install flask
Flask 애플리케이션의 구조
Flask로 RESTful API를 개발하기 위해서는 아래와 같은 구조를 갖추어야 합니다:
├── app.py
├── requirements.txt
├── models.py
├── routes.py
└── README.md
app.py
: Flask 애플리케이션의 진입점입니다.requirements.txt
: 필요한 라이브러리를 명시합니다.models.py
: 사용할 데이터 모델을 정의합니다.routes.py
: API 엔드포인트와 해당 엔드포인트에 대한 동작을 정의합니다.
Flask 애플리케이션 생성
먼저, app.py
파일을 생성하고 다음과 같이 Flask 애플리케이션을 생성합니다:
# app.py
from flask import Flask
app = Flask(__name__)
if __name__ == '__main__':
app.run(debug=True)
API 엔드포인트 정의
다음으로, routes.py
파일을 생성하고 엔드포인트를 정의합니다. 예를 들어, 사용자 관련된 API를 개발한다면 아래와 같이 작성할 수 있습니다:
# routes.py
from flask import jsonify, request, Blueprint
users = [
{'id': 1, 'name': 'John Doe', 'email': 'john.doe@example.com'},
{'id': 2, 'name': 'Jane Smith', 'email': 'jane.smith@example.com'}
]
api = Blueprint('api', __name__)
@api.route('/users', methods=['GET'])
def get_users():
return jsonify({'users': users})
@api.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
user = [user for user in users if user['id'] == user_id]
if len(user) == 0:
return jsonify({'error': 'User not found'}), 404
return jsonify({'user': user[0]})
@api.route('/users', methods=['POST'])
def create_user():
user = {'id': len(users) + 1, 'name': request.json['name'], 'email': request.json['email']}
users.append(user)
return jsonify({'message': 'User created successfully'})
@api.route('/users/<int:user_id>', methods=['PUT'])
def update_user(user_id):
user = [user for user in users if user['id'] == user_id]
if len(user) == 0:
return jsonify({'error': 'User not found'}), 404
user[0]['name'] = request.json['name']
user[0]['email'] = request.json['email']
return jsonify({'message': 'User updated successfully'})
@api.route('/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
user = [user for user in users if user['id'] == user_id]
if len(user) == 0:
return jsonify({'error': 'User not found'}), 404
users.remove(user[0])
return jsonify({'message': 'User deleted successfully'})
Flask 애플리케이션에 라우팅 추가
애플리케이션에 위에서 정의한 API 엔드포인트를 추가하기 위해 app.py
파일을 다음과 같이 수정합니다:
# app.py
from flask import Flask
from routes import api
app = Flask(__name__)
app.register_blueprint(api, url_prefix='/api')
if __name__ == '__main__':
app.run(debug=True)
테스트와 실행
Flask 애플리케이션을 실행하기 전에, 필요한 라이브러리를 설치하기 위해 requirements.txt
파일을 생성합니다:
flask
그런 다음 터미널에서 다음 명령어를 실행하여 Flask 애플리케이션을 실행합니다:
flask run
API 호출을 테스트하기 위해 curl
이나 Postman
과 같은 도구를 사용할 수 있습니다. 예를 들어, GET /api/users
엔드포인트를 호출하면 다음과 같은 결과를 얻을 수 있습니다:
{
"users": [
{
"id": 1,
"name": "John Doe",
"email": "john.doe@example.com"
},
{
"id": 2,
"name": "Jane Smith",
"email": "jane.smith@example.com"
}
]
}
결론
Flask를 사용하여 RESTful API를 개발하는 방법을 살펴보았습니다. Flask의 유연한 구조를 활용하여 API 엔드포인트를 정의하고 개발할 수 있으며, 이를 통해 간편하게 웹 애플리케이션 개발에 집중할 수 있습니다. Flask의 다양한 기능과 라이브러리를 활용하여 고급 API 개발에도 도전해보세요.