본문 바로가기
Flask

Flask jsonify로 json return 하기

by 두배더 2024. 5. 10.

 

Flask 에서는 Python의 변수 타입 중 하나인 json (dictionary 형태) 를 return 할 수 있습니다.

참고로 Dictionary 타입은 { key1:value1, Key2:value2 } 와 같이 key와 value가 짝지어진 형태입니다.

 


 

설치 방법

from flask import Flask, jsonify

 

 


Flask jsonify 사용 방법

 

웹에서 json이 필요한 경우는 무엇일까요?

 

예를 들어, 회원 정보를 나타낼 수 있습니다.

 

{ User ID : 변수, User PW : tokenized, Phone number : 000-0000…}

 

보통 변수와 함께 나타내며 다음과 같이 사용할 수 있습니다.

(라우트 경로에 변수를 나타내는 방법에 대해 자세히 알고 싶다면 다음 글을 참고하세요!)

2024.05.10 - [분류 전체보기] - Flask 라우팅 함수와 라우트 경로에 변수 넣기

 

@app.route("/mypage/<string:username>")
def mypage(username):
    userinfo = { 'User ID' : username, 'User PW' : 'tokenized', 'Phone number' : '000-000'}
    return jsonify(userinfo)

 

<결과>

 

flask jsonify
/mypage/kim

 


 

Flask jsonify 변수 두개 넣기

 

위의 예시에서는 변수를 하나만 넣었지만

변수가 여러개일 경우에는 어떻게 해야 할까요?

 

인자로 변수를 여러개 넣으면 됩니다.

예를 들어, user = kim (변수) 에게 어떠한 gift = rose (변수)를 줄 수 있습니다.

 

@app.route('/welcome/<string:gift>/<user>')
def welcomegift(gift, user):
    if user == 'kim':
        data = {'gift name':gift, 'user':user, 'sentence':'Gift is given'}
        return jsonify(data)
    else:
        return f'{user}, you can\'t receive gift'

 

 


 

 

<결과>

 

flask jsonify
/welcome/rose/kim

 

 


Flask jsonify에 변수 넣기

 

위에서는 라우트 경로에서 변수를 넣을 경우 그 변수들을 출력해주는 것이지만

서버에 이미 변수가 설정돼있을 경우에는 어떻게 출력할 수 있을까요?

 

예를 들어, 유저가 이미 로그인한 상태라면, 서버는 현재 접속 중인 유저의 user name, user email 등의 정보를 알고 있습니다.

그럴 경우, 변수를 정의해주는 것이 아니라, 현재 서버가 알고있는 유저 정보를 띄어주는 것이 더욱 적절할 것입니다.

 

예시 코드를 보면 이해하기 쉽습니다.

 

 

# 서버가 다음 정보 (로그인한 유저)를 알고 있다고 가정

username = 'kim'
useremail = 'kim@dobetter.com'
userid = 'dobetter'

@app.route('/_get_current_user')
def get_current_user():
    return jsonify(username=username,
                   email=useremail,
                   id=userid)

 


 

<결과>

flask jsonify
/_get_current_user