반응형

OS: Ubuntu 16.04 server (amd64)

Python: 3.5.2

Flask-restful: 0.3.5


Flask-restful을 이용하면 하나의 클래스가 REST API 1개를 처리할 수 있도록 만들 수 있다. 처음에는 Quickstart 페이지에 있는 HelloWorld 예제 [1]를 따라하면서 API 여러 개를 만들면서 클래스도 여러 개 만들고, 각 클래스에서 argument 처리 등 점점 복잡한 작업을 추가하기 시작하면서 소스 파일이 1개뿐이면서 길이가 아주 많이 길어지는 상황이 되었다.


하나의 소스 파일이 너무 길면 보기도 불편하고, 무엇보다 여러 사람이 REST API를 조금씩 나눠서 병렬적으로 코딩하는 경우에는 하나의 파일에 동시에 수정이 발생하므로 협업 측면에서도 관리하기 어렵다. 따라서 여러 개의 파일로 나눠서 관리하는 것이 좋다. 사실 어떻게 나눠야 할 지 모르겠어서 고민하다가, 그냥 파이썬이 클래스를 다른 소스 파일에서 import해 오는 구조를 그대로 쓰기만 하면 되는 간단한 원리임을 알 수 있었다.


예를 들면, 아래와 같은 HelloWorld 예제를 main.py로 두고,


<main.py>

from flask import Flask

from flask_restful import Resource, Api


app = Flask(__name__)

api = Api(app)


class HelloWorld(Resource):

    def get(self):

        return {'hello': 'world'}


api.add_resource(HelloWorld, '/')


if __name__ == '__main__':

    app.run(debug=True)



여기서 main.py는 서버를 실행하는 시작 포인트로만 쓰고 실제 REST API 처리하는 부분을 분리한다면, 아래와 같이 할 수 있다.


<hello.py>

from flask_restful import Resource


class HelloWorld(Resource):

    def get(self):

        return {'hello': 'world'}



<main.py>

from flask import Flask

from flask_restful import Resource, Api

from hello import HelloWorld


app = Flask(__name__)

api = Api(app)


api.add_resource(HelloWorld, '/')


if __name__ == '__main__':

    app.run(debug=True)


이제 main.py 파일에서는 클래스를 import하고 API 정의만 나열해 주고, 실제 API 처리 파일은 hello.py에서 수정하는 구조가 되었다.



<참고자료>

[1] Flask-RESTful Quickstart, http://flask-restful.readthedocs.io/en/0.3.5/quickstart.html



반응형
블로그 이미지

Bryan_

,