├── app
│ ├── __init__.py
│ ├── config.py
│ └── namespace.py
├── credentials.py
├── endpoint
│ ├── __init__.py
│ └── test
│ ├── endpoint.py
│ ├── model.py
│ └── view.py
├── run.py
① 위와 같이 파일구조를 나누고
② endpoint/test/endpoint.py에 api를 작성한 후
③ run.py를 실행 후
④ 해당 api를 호출하면 404에러가 뜨고 제대로 실행되지 않는다.
# app/__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_restplus import Api, Resource
from app.config import configs
app = Flask(__name__)
app.config.from_object(configs['dev'])
db = SQLAlchemy(app)
api = Api(app, version='1.0', title='Test', description='Test simple API', prefix='/api/v1')
# endpoint/test/endpoint.py
from app import api
from flask_restplus import Resource
@api.route('/test')
class HelloWorld(Resource):
def get(self):
return {'hello': 'world'}
# run.py
from app import app
import endpoint
if __name__ == '__main__':
app.run()
결론부터 말하자면,
endpoint/__init__.py 에 하위 디렉토리를 import 해주면 끝.
# endpoint/\__init__.py
from endpoint.test import endpoint
플라스크 어플리케이션 객체 생성은 __init__.py 파일에서 해야한다. 그런 방식으로 개별 모듈은 안전하게 포함되고 __name__ 변수는 알맞은 패키지로 해석될 것이다.
모든 뷰 함수들은(함수의 선언부 위에 route() 데코레이터(decorator)를 가진 함수)는 __init__.py 파일에 임포트되어야 하는데, 객체가 아닌 함수가 있는 모듈을 임포트해야한다. 어플리케이션 객체를 생성한 후에 뷰 모듈을 임포트해야한다.