Flask Restful을 사용하여 Flask의 사용자 지정 경로

2429 단어
이 짧은 튜토리얼에서는 플라스크를 사용하여 API를 작성하는 방법을 설명합니다. 다음과 같은 목표를 가지고:
a) 사용자 지정 경로 정의
b) 경로, 컨트롤러, 모델, 검증자 등을 각각의 폴더로 분리

나중에 Flask와 관련하여 제 아키텍처 스타일을 이해하는 데 도움이 되는 게시물을 올릴 것입니다.
사용자 지정 경로 정의
예를 들어 가상의 블로그 사이트를 살펴보겠습니다. 귀하의 프로젝트에 사용자, 댓글 및 게시물 폴더가 있다고 가정합니다. 그 이유는 게시물과 사용자에 대한 모델, 경로, 컨트롤러 등을 분리하고 싶다는 사실에 신경이 쓰이기 때문입니다. 사용자 컨트롤러는 확실히 우려하지만 이에 국한되지는 않습니다. 등록, 로그인, 암호 분실, 이메일 변경 등 게시물에 대한 게시물에는 편집 게시물, 게시물 삭제, 게시물 작성 등이 포함되지만 이 트랜잭션을 하나의 파일로 클러스터링하면 확실히 지칠 것이라는 점에 동의할 것입니다. 가능하지 않다면 당신을 미치게 만들 것입니다. 또한 Flask-Restful은 알려진 HTTP 동사인 "GET", "POST"등만 지원하므로 각 게시물에 대해 새 클래스를 정의하고 각각 작업을 삭제하는 것은 관리할 수 없는 것처럼 들립니다. 로그인 및 등록 트랜잭션을 달성하려면 아래와 같이 다른 클래스가 필요하다고 생각할 수 있습니다(routes.py 파일에서).

routes.py
class LoginView(Resource):
    logging.basicConfig(level=logging.INFO)
    logging.info("Entered the LoginView...")

    def login(self):
        print("\n\t Login route....")

class RegisterView(Resource):
    logging.basicConfig(level=logging.INFO)
    logging.info("Entered the RegisterView...")

    def register(self):
        print("\n\t Register route....")


이 문제는 아래와 같이 파이썬 방식으로 간단하게 해결할 수 있습니다.

from flask_restful import (
    Resource,
    request
)
import logging

from ..models.models import Users
class AuthViews(Resource):
    logging.basicConfig(level=logging.INFO)
    logging.info("Entered the auth views...")

    def login(self):
        print("\n\t Login route....")


    def register(self):
        print("\n\t Register route....")


    def post(self):
        print("\n\t Login-Data: ", request.data)
        print("\n\t Login-Data: ", request.url)
        url = request.url
        if "login" in url:
            login = self.login()
        elif "register" in url:
            register = self.register()
        elif "forgot-password" in url:
            register = self.forgot_password()
        else:
            etc....

auth_routes = ["/auth/register", "/auth/login"]


그런 다음 app.py 파일에서 다음과 같이 리소스를 등록합니다.

...
from routes.routes import AuthViews, auth_routes
app = Flask(__name__)
api = Api(app)
api.add_resource(AuthViews, *auth_routes)


감사. 다음으로 PyMongo를 사용하여 모델을 정의하는 방법을 보여 드리겠습니다.

좋은 웹페이지 즐겨찾기