[파이썬] Flask로 RESTful API 개발하기

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

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 개발에도 도전해보세요.