Python 웹 애플리케이션 개발에서 RESTful API 구축은 피할 수 없는 주제입니다. RESTful API는 HTTP 프로토콜을 통해 가볍고 확장 가능하며 유지 관리가 쉬운 API 인터페이스를 지원하므로 현대 웹 애플리케이션 개발의 표준이 되었습니다. 언급할 가치가 있는 두 가지 Python 라이브러리가 있습니다: Flask-Restless 및 Flask-SQLAlchemy. 이를 사용하여 RESTful API를 구축하는 방법에 대한 모범 사례를 살펴보겠습니다.
Flask-Restless는 RESTful API 개발을 단순화하도록 설계된 강력한 Python 라이브러리입니다. Flask 프레임워크에서 제공하는 라우팅 및 요청 처리 기능을 사용하고 SQLAlchemy를 통합하여 데이터베이스 작업을 처리합니다. Flask-SQLAlchemy는 Flask 애플리케이션의 데이터베이스 작업을 위한 확장입니다. 또한 코드 작성을 더 쉽게 해주는 강력한 ORM 기능도 제공합니다.
먼저 표시할 데이터 모델을 정의해야 합니다. 예를 들어 게시물, 댓글, 사용자에 대한 API를 구현해야 하는 간단한 블로깅 애플리케이션을 생각해 보세요. 다음과 같은 데이터 모델을 정의할 수 있습니다.
from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class Post(db.Model): __tablename__ = 'posts' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100)) body = db.Column(db.Text) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) comments = db.relationship('Comment', backref='post', lazy='dynamic') class Comment(db.Model): __tablename__ = 'comments' id = db.Column(db.Integer, primary_key=True) body = db.Column(db.String(140)) post_id = db.Column(db.Integer, db.ForeignKey('posts.id')) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(50), unique=True) email = db.Column(db.String(120), unique=True) posts = db.relationship('Post', backref='user', lazy='dynamic') comments = db.relationship('Comment', backref='user', lazy='dynamic')
그런 다음 Flask-Restless를 사용하여 RESTful API를 만들 수 있습니다. Flask-Restless는 API를 생성하는 빠르고 쉬운 방법을 제공합니다. API를 생성하려면 다음 단계를 수행해야 합니다.
1.Flask 애플리케이션을 생성하고 데이터베이스를 구성합니다.
from flask import Flask from flask_restless import APIManager from app.models import db, Post, Comment, User app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blog.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['JSON_SORT_KEYS'] = False db.init_app(app)
2. API 관리자 및 API 엔드포인트를 생성합니다.
api_manager = APIManager(app, flask_sqlalchemy_db=db) api_manager.create_api(Post, methods=['GET', 'POST', 'PUT', 'DELETE']) api_manager.create_api(Comment, methods=['GET', 'POST', 'PUT', 'DELETE']) api_manager.create_api(User, methods=['GET', 'POST', 'PUT', 'DELETE'])
3. Flask 애플리케이션을 실행합니다.
if __name__ == '__main__': app.run(debug=True)
이제 GET, POST, PUT 및 DELETE HTTP 메서드를 통해 게시물, 댓글 및 사용자에 대해 CRUD 작업을 수행할 수 있는 기본 RESTful API를 만들었습니다. 그러나 이것은 단지 기본적인 예일 뿐입니다. 또한 필터링, 정렬, 페이징과 같은 몇 가지 추가 기능을 구현해야 합니다.
Flask-Restless는 데이터를 필터링하는 매개변수 세트를 제공합니다. 예를 들어, "q" 매개변수를 사용하여 검색 조건을 지정하고, "page" 매개변수를 페이징에 사용하고, "sort" 매개변수를 사용하여 정렬 등을 지정할 수 있습니다.
GET /api/posts?q={"filters":[{"name":"title","op":"like","val":"Flask"}]}&sort=-id&page=1
위 GET 요청은 반환된 후 ID를 기준으로 역순으로 정렬되며, 제목에 "Flask"가 포함된 블로그 게시물 목록의 첫 번째 페이지만 반환됩니다(대소문자 구분 안 함).
또한 Flask-Restless는 필요에 따라 반환할 열을 선택하는 "include_columns" 매개 변수와 원하지 않는 열을 제외하는 "exclude_columns" 매개 변수도 지원합니다. 예를 들어 다음 GET 요청은 기사 ID, 제목 및 작성자 정보가 포함된 목록을 반환하지만 본문 정보는 반환하지 않습니다.
GET /api/posts?include_columns=id,title,user&exclude_columns=body
Flask-SQLAlchemy는 equal_to, like, ilike 등과 같은 몇 가지 유용한 쿼리 필터 도구도 제공합니다. 이러한 도구를 사용하면 보다 복잡한 쿼리를 생성할 수 있습니다.
users = User.query.filter(User.username.ilike('%john%'))
이 예에서 쿼리는 사용자 이름에 "john"이 포함된 모든 사용자와 일치합니다.
요약하자면 Flask-Restless와 Flask-SQLAlchemy는 RESTful API를 생성하기 위한 두 가지 강력한 Python 라이브러리입니다. 이를 조합하여 사용하면 유지 관리 및 확장이 쉬운 API 애플리케이션을 빠르고 간단하게 개발할 수 있습니다. 실제로는 실제 요구 사항에 따라 애플리케이션에 가장 적합한 기능을 선택해야 합니다. 그러나 여기에 언급된 기능은 RESTful API 구축을 위한 모범 사례입니다.
위 내용은 Flask-Restless 및 Flask-SQLAlchemy: Python 웹 애플리케이션에서 RESTful API를 구축하기 위한 모범 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!