/ python

flask json response monkey patch

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