FLYNNLABAboutMeCodingActivityStudy 2024초등수학
flask json response monkey patch
python, flask

Flask로 RestAPI를 작성해서 브라우저에서 보면 JSON이 제대로 나오지 않는 경우가 있다. 이때 두가지를 패치했다.

json.dumps 메서드를 partial을 이용해서 기본값을 변경했다. response 헤더에서 Content-Type 값이 application/json만 있는 경우 charset=utf-8 부분도 추가할 수 있도록 했다.

    JSON_AS_ASCII = False
    JSONIFY_MIMETYPE = "application/json; charset=utf-8"
import json
from functools import partial

from flask import Response


def patch_json_response(app):
    json.dumps = partial(json.dumps, ensure_ascii=app.config['JSON_AS_ASCII'])

    @app.after_request
    def patch_content_type(response: Response):
        if response.headers.get('Content-Type', type=str, default='').startswith('application/json'):
            response.headers.set('Content-Type', app.config['JSONIFY_MIMETYPE'])
        return response