인프런 커뮤니티 질문&답변
jsonify를 꼭 써야 하나요?
작성
·
1.4K
0
영상 8분 35초 부근 입니다.
영상을 보다가
return_data 는 이미 json 파일 형식인데
왜 jsonify를 또 해야할까 하는 생각이 들었습니다
@app.route('/login')
def login():
username = request.args.get('user_name')
passwd = request.args.get('pw')
email = request.args.get('email_address')
print(username, passwd, email)
if username == 'dave':
return_data = {'auth': 'success'}
else:
return_data = {'auth': 'failed'}
return return_data
그래서 위와 같이 jsonify를 빼고 코드를 작성해도
아래와 같이
httpie 에서 정삭적으로 값이 출력됩니다.

jsonify를 적용 안하면 나중에 문제가 생기는지 궁금합니다!!
퀴즈
Flask에서 GET 방식으로 전달된 URL 파라미터 값을 가져올 때 주로 사용하는 객체는 무엇일까요?
session
request
response
app
답변 1
7
안녕하세요. 좋은 질문같아요. ㅎㅎ
일단, 파이썬에서 해당 데이터는 데이터 타입은 사실 사전이잖아요. 그래서 사전 데이터를 바로 리턴할 경우, 해당 데이터가 전달되기는 하지만, HTTP header 에 MIME Type 이 application/json 으로 명시가 되지 않았던 적이 있습니다. jsonify 로 리턴하면, 명시적으로 HTTP header 에도 MIME Type 이 application/json 으로 기재가 되고, 수신측에서도 이를 기반으로 적합하게 해당 데이터를 처리했다고 보시면 됩니다.
그런데, 꾸준히 웹이나, flask 가 개선되다보니, 최근에는 사실 그렇게 하지 않고, 막바로 사전 데이터를 보내도, 알아서 HTTP header 에도 MIME Type 이 application/json 으로 기재도 되고, 수신측에서도 꼭 굳이 저런 타입을 안붙여도 크게 무리 없이 처리가 가능한 것으로 이해가 됩니다.
json 데이터로 정확히 전달되기 위해, 필요한 기능들을 jsonify 가 완벽하게 해주었는데, 최근에는 jsonify 가 아니더라도 flask 에서 관련 기능들을 자동으로 해주고, 수신측도 완벽하지 않더라도, 가능한 처리를 해주는 상황이다 라고 이해를 해주시면 좋을 것 같습니다. 그래도 공식적인 것은 jsonify 를 json 데이터를 리턴할 때는 써준다 정도로 이해해보시면 어떨까요?
감사합니다.




