[python] CRUD 기능에 대한 API 디자인

본 문서에서는 Python을 사용하여 CRUD(Create, Read, Update, Delete) 기능을 갖춘 API를 디자인하는 방법에 대해 알아보겠습니다.

1. 데이터 모델 설계

먼저, API에서 다룰 데이터의 모델을 설계해야 합니다. 각 데이터 모델은 필드, 타입, 유효성 검사 규칙 등을 포함해야 합니다.

다음은 사용자 모델의 예시입니다.

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(80), nullable=False)

2. RESTful API 디자인

다음으로, Flask를 사용하여 RESTful API를 디자인합니다.

from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)

# Create
@app.route('/user', methods=['POST'])
def create_user():
    data = request.get_json()
    new_user = User(username=data['username'], email=data['email'], password=data['password'])
    db.session.add(new_user)
    db.session.commit()
    return jsonify({'message': 'New user created!'})

# Read
@app.route('/user/<int:user_id>', methods=['GET'])
def get_user(user_id):
    user = User.query.get_or_404(user_id)
    return jsonify({'username': user.username, 'email': user.email})

# Update
@app.route('/user/<int:user_id>', methods=['PUT'])
def update_user(user_id):
    user = User.query.get_or_404(user_id)
    data = request.get_json()
    user.username = data['username']
    user.email = data['email']
    db.session.commit()
    return jsonify({'message': 'User updated!'})

# Delete
@app.route('/user/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
    user = User.query.get_or_404(user_id)
    db.session.delete(user)
    db.session.commit()
    return jsonify({'message': 'User deleted!'})

if __name__ == '__main__':
    app.run(debug=True)

3. 테스트

API가 올바르게 동작하는지 확인하기 위해 테스트를 진행해야 합니다.

이를 위해 curl이나 API 개발 도구를 사용하여 각 기능이 예상한 대로 동작하는지 확인해야 합니다.

결론

Python과 Flask를 사용하여 CRUD 기능을 갖춘 API를 디자인하는 방법에 대해 알아보았습니다. 이를 통해 데이터 모델링부터 실제 API 구현, 테스트에 이르기까지의 전체적인 과정을 이해할 수 있었습니다.