• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

jsonify를 꼭 써야 하나요?

21.05.24 19:48 작성 조회수 1.06k

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를 적용 안하면 나중에 문제가 생기는지 궁금합니다!!

답변 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 데이터를 리턴할 때는 써준다 정도로 이해해보시면 어떨까요?

감사합니다.