강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

가후님의 프로필 이미지
가후

작성한 질문수

[리뉴얼] 처음하는 파이썬 백엔드와 웹기술 입문 (파이썬 중급, flask[플라스크] 로 이해하는 백엔드 및 웹기술 기본) [풀스택 Part1-1]

Rest API 이해를 위한 웹기술 이해: GET 방식과 URL (업데이트)

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

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

감사합니다.

가후님의 프로필 이미지
가후

작성한 질문수

질문하기