Request Hook
- Request Hook 이란?
- 통신을 주고 받을 때 API를 통해 요청 및 응답을 하게 됩니다.
이 때 requset hook는 요청 단계의 생명 주기에서 각 단계별 처리를 할 수 있게 해줍니다.
Request Hook 생명주기
@app.before_first_request
def before_first_request():
app.logger.info("BEFORE_FIRST_REQUEST")
@app.before_request
def before_request():
app.logger.info("BEFORE_REQUEST")
@app.after_request
def after_request(response):
app.logger.info("AFTER_REQUEST")
return response # atfer_request의 경우 response 인자를 반환해야함
@app.teardown_request
def teardown_request(exception):
app.logger.info("TEARDOWN_REQUEST")
@app.teardown_appcontext
def teardown_appcontext(exception): # application context가 끝날때
app.logger.info("TEARDOWN_CONTEXT")
Request Context
from flask import request
@app.route("/test/method/<id>", methods = ['GET', 'POST']) # default GET
def method_test(id):
return jsonify({
'request.method': request.method,
'request.args': request.args,
'request.form': request.form,
'request.json': request.json,
})
Application Context
- g (global)
- request 내에서만 값이 유효한 스레드 로컬 변수이므로 각 리퀘스트 내의 전역 변수
from flask import g
g.변수명 = 값
- current_app
- 활성화된 어플리케이션을 위한 인스턴스
- app인스턴스를 import하지 않고도, app의 config 정보를 조회 가능
from flask import Flask, current_app
app = Flask(__name__)
app.logger.info(f'current_app.config:{current_app.config}')
참고 자료