본문 바로가기

BackEnd/Python-Flask

[백엔드] Flask: return 타입, jsonify()

반응형

 

 

from flask import Flask, jsonify
from http import HTTPStatus

app = Flask(__name__)

 

@app.route('/hithere', methods = ['GET'] )
def hi_there():
    return 'Hithere~~~'

@app.route('/', methods = ['GET'])
def root():
    return '안녕하세요'

 

웹에서 보여지는 화면
웹에서 보여지는 화면

 

Return 타입

- string,dict,tuple, response instance, WSGI callable

@app.route('/add',methods = ['GET'])
def add():
    data = 283+111
    return str(data)

- 숫자의 합이다.

- 이때, return 뒤에 data변수명만 작성할 경우에는 하기와 같은 에러가 뜬다.

TypeError: The view function did not return a valid response. The return type must be a string, dict, tuple, Response instance, or WSGI callable, but it was a int.

- int로는 반환이 안된다는 뜻이다. 고로, string으로 타입변환을 해주어서 반환을 해주자.

- WSGI: web service gateway interface  -> 누가 오나 안오나 계속 보고 있는 것

 

(int로 반환했을 때의 웹브라우저 경로 화면)
(정상 작동했을 때의 경로 화면)

 

 

jsonify()

- 파이썬 딕셔너리를, JSON 데이터로 만들어주는 기능

- json.dump의 기본동작을 그대로 사용하기 때문에 아스키 이스케이프 인코딩을 적용한다는 점이 문제.

- 한글은 못읽는다. (이 부분은 나중에 정리하도록 하자)

@app.route('/act/data', methods = ['GET'])
def act():
    ret = {'count': 2, 'students': [ {'name':'Mike', 'age': 30},
                                     {'name': 'Jeanie', 'age':25}]}
    return jsonify(ret)

 

(정상 작동했을 때의 경로 화면)

 

if __name__ == '__main__' :
    app.run(port=5001)

 

반응형