Flask는 간단하게 Rest api를 만들수 있게 되어있다. 

소스를 보면 Flask의 이용이 얼마나 간단한지 알수있다. 

폴더의 구조는 아래와 같으며, 폴더별로 Rest Api를 별도로 정의할수 있게 한다. 

run.py
└─application01
      └app01.py ( Rest Api:app_01)
└─application02
      └app02.py ( Rest Api:app_02 )

app01.py

import logging
from flask import Blueprint, request, jsonify

app_01 = Blueprint('app_01', __name__)
logger = logging.getLogger()

@app_01.route('/app', methods=['POST'])
def app():
    try:
        param = request.get_json()
        logger.info(f'##########################')
        logger.info(f'app01')
        logger.info(f'##########################')
        logger.info(f'[REQ] {param}')

        return jsonify(status='OK')
    except Exception as e:
        logger.fatal(f'【システムエラー】{str(e)}:{str(request.get_json())}')
        return jsonify(status='NG', error_code=500, message='【システムエラー】処理に失敗しました。\n{}'.format(str(e)))

app02.py

import logging
from flask import Blueprint, request, jsonify

app_02 = Blueprint('app_02', __name__)
logger = logging.getLogger()


@app_02.route('/app', methods=['POST'])
def app():
try:
param = request.get_json()
logger.info(f'##########################')
logger.info(f'app02')
logger.info(f'##########################')
logger.info(f'[REQ] {param}')

return jsonify(status='OK')
except Exception as e:
logger.fatal(f'【システムエラー】{str(e)}:{str(request.get_json())}')
return jsonify(status='NG', error_code=500, message='【システムエラー】処理に失敗しました。\n{}'.format(str(e)))

run.py

import logging.config
from flask import Flask

from application01.app01 import app_01
from application02.app02 import app_02

logging.config.fileConfig('logging.conf')
logger = logging.getLogger()

app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False

app.register_blueprint(app_01, url_prefix='/app_01')
app.register_blueprint(app_02, url_prefix='/app_02')

if __name__ == '__main__':

import sys
args = sys.argv
app.run(host=args[1], port=args[2])
# app.run(host='0.0.0.0', port=4000)

실제소스는 아래에서 다운받을수 있다.

GitHub - kimjisuu/Flask

'Flask' 카테고리의 다른 글

Flask의 웹문서를 만들기(Flask-restx)  (0) 2021.10.17

+ Recent posts