포도가게의 개발일지
Flask jsonify? vs json.dumps 본문
반응형
def jsonify(*args, **kwargs):
if __debug__:
_assert_have_json()
return current_app.response_class(json.dumps(dict(*args, **kwargs),
indent=None if request.is_xhr else 2), mimetype='application/json')
우선 def jsonify()에서 볼 수 있듯이 Flask에서 json response을 보내기 위해 만들어진 함수이다
1 json.dumps
python이 가지고 있는 json library의 json.dumps() method는 수동으로 MIME type header를 추가해주어야 하는 encoded string을 리턴한다.
하지만 flask가 알아서 판단해 response를 자동으로 보내주도록 사용하기 때문에 직접적으로 사용할 수 있다. 다만 reponse header fields는 디폴트(text/html; charset=utf-80)로 처리된다.
2 차이점
# jsonify
return jsonify({'token' : token}), 200
# json.dumps
return json.dumps({'token' : token}), 200
2.1 Parameter accepted
- jsonify : 참고한 글에서는 dictionary type만 된다고 적혀 있는데, 테스트를 해보니 이제 리스트도 받을 수 있다. 아마 업데이트가 된 것 같다.(Flask에서 정의되 있는 함수기 때문에 Flask 앱 내에서만 사용 가능), 좀 더 다양한 형식을 보낼려면 json.dump가 나음
- json.dumps : jsonify 보다 더 다양한 type을 받을 수 있다고 나와있다.(shell에서 바로 return받을 수 있다)
Comments