본문 바로가기
기록/Python

[Python/Flask] 파이썬 flask 활용한 API 개발 기록

by 자임 2022. 7. 11.


1. flask json 인코딩 깨질 때

app.config['JSON_AS_ASCII'] = False

 

코드 추가

 

 


2. get 방식으로 넘어온 파라미터 데이터 저장하는 방법
https://apt-info.github.io/%EA%B0%9C%EB%B0%9C/python-flask2-get/

@app.route('/')
def root():
    parameter_dict = request.args.to_dict()
    if len(parameter_dict) == 0:
        return 'No parameter'

    parameters = ''
    for key in parameter_dict.keys():
        parameters += 'key: {}, value: {}\n'.format(key, request.args[key])

    return parameters





3. 여러 API 값을 한 번에 return 할 수 있는 방법 연구

from flask import Flask, request
from kciJson import kci
from WosLiteJson import wos

app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False

data = []

@app.route("/search")
def search():
    title = request.args.get("title", "")
    response = "{}".format(title)
    data.append(kci.get_all(response))
    data.append(wos.get_all(response))

    return data

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

 

 

오류 :

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 list.

해결 : return type으로 dict는 처리할 수 있는데 list는 처리할 수 없다고 해서, jsonify 처리해줌.
https://snippets-save-us.tistory.com/73



 

@app.route("/search")
def search():
    title = request.args.get("title", "")
    response = "{}".format(title)
    data.append(kci.get_all(response))
    data.append(wos.get_all(response))

    return jsonify(data)


오류 : 두 번째 API(wos) 값의 데이터가 깨짐. 한글 인코딩 문제 X

원인 : 

kci는 return 값이 dict형으로 들어오는데, wos는 return 값이 json 타입으로 들어와서,
똑같이 jsonify로 변환해줬을 때 깨지는 현상 발생.

해결 : json.loads를 사용해서 wos는 dict형으로 1차 변환해준 다음 진행

 

@app.route("/search")
def search():
    title = request.args.get("title", "")
    response = "{}".format(title)
    data.append(kci.get_all(response))
    data.append(json.loads(wos.get_all(response)))

    return jsonify(data)






4. 참고 및 공부할 페이지

flask 기본 구조
https://wings2pc.tistory.com/entry/%EC%9B%B9-%EC%95%B1%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%94%8C%EB%9D%BC%EC%8A%A4%ED%81%ACPython-Flask


웹 프로그래밍 예제
https://edudeveloper.tistory.com/135


점프 투 플라스크
https://wikidocs.net/81510