Flask에서 유효한 JSON 응답 반환
이 설명을 통해 Flask의 JSON 지원과 API를 만들고 Flask의 jsonify()
를 사용하여 JSON 응답으로 반환하는 방법을 배웁니다.
Flask에서 jsonify()
의 도움으로 유효한 JSON 응답 반환
JSON 객체의 유형을 Python 유형에 매핑할 수 있고 사전이나 배열처럼 액세스할 수 있기 때문에 Flask와 함께 JSON을 사용하는 것은 매우 간단합니다. JSON의 기본 사항에 익숙하다면 이것을 이해할 수 있을 것입니다.
이제 Flask 앱을 설정해야 합니다. 우리는 앱을 만들기 위해 몇 가지 기본적인 작업을 수행한 다음 단일 경로를 만들 것입니다.
데코레이터 내부에서 route('truck/api/',methods=['GET'])
인 Get_Trucks()
메소드의 루트를 지정합니다. 그리고 Get_Trucks()
메서드 내에서 Trucks
라는 사전 목록을 선언하고 직접 반환합니다.
@app.route("truck/api/", methods=["GET"])
def Get_Trucks():
Trucks = [
{"id": 1, "year": 2017, "model": ""},
{"id": 2, "year": 2019, "model": ""},
{"id": 3, "year": 2020, "model": ""},
{"id": 4, "year": 2016, "model": ""},
]
return Trucks
이제 두 가지 경우를 살펴보겠습니다. 첫 번째는 객체 배열을 반환하는 것이고 두 번째는 하나의 객체 자체 또는 하나의 사전을 반환하는 것입니다.
계속해서 두 번째 것을 살펴보겠습니다. 코드는 Truck_Details()
라는 함수를 제외하고 동일합니다.
from flask import Flask
app = Flask(__name__)
@app.route("/truck/api/", methods=["GET"])
def Get_Trucks():
Trucks = [
{"id": 1, "year": 2017, "model": ""},
{"id": 2, "year": 2019, "model": ""},
{"id": 3, "year": 2020, "model": ""},
{"id": 4, "year": 2016, "model": ""},
]
return Trucks
@app.route("/truck-details/api/", methods=["GET"])
def Truck_Details():
Details = {"id": 2, "year": 2019, "model": ""}
return Details
if __name__ == "__main__":
app.run(debug=True)
이제 Flask 앱을 실행하고 브라우저로 이동합니다. 이 첫 번째 경로를 테스트해 보겠습니다.
Enter 키를 누르면 view
함수가 브라우저에 Python 목록을 보내려고 하기 때문에 유효한 응답을 반환하지 않았다는 형식 오류가 발생합니다.
Flask에서 jsonify()
를 하나 더 가져와서 이 문제를 매우 빠르게 고칠 수 있습니다. 이것은 빌트인 Flask입니다. 타사 모듈을 사용할 필요가 없습니다.
목록이나 배열을 반환하는 위치로 이동하여 jsonify()
로 래핑합니다. 이것을 저장하고 경로를 다시 테스트해 보겠습니다. 이제 유효한 JSON 응답을 받습니다.
네트워크 검사기에서 이것을 보면 애플리케이션의 콘텐츠 유형이 JSON임을 알 수 있습니다.
jsonify()
를 사용하지 않고 Flask에서 단일 객체를 반환하는 방법을 살펴보겠습니다. 브라우저에서 살펴보겠습니다.
업그레이드된 버전을 사용하고 있기 때문에 작동합니다. Flask 버전 1.1.0 이상을 사용하는 경우 view
에서 반환할 때 사전이 자동으로 사전을 JSON으로 변환하지만 Flask 버전이 1.1.0 미만인 경우 다음을 수행할 수 있습니다. 여러 객체를 반환할 때와 동일합니다.
오른쪽을 보면 콘텐츠 유형이 JSON인 것을 알 수 있으며, 응답 데이터를 꾸미기 위해 JSON 보기라는 Chrome 확장 프로그램을 사용하고 있습니다.
전체 소스 코드:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/truck/api/", methods=["GET"])
def Get_Trucks():
Trucks = [
{"id": 1, "year": 2017, "model": ""},
{"id": 2, "year": 2019, "model": ""},
{"id": 3, "year": 2020, "model": ""},
{"id": 4, "year": 2016, "model": ""},
]
return jsonify(Trucks)
@app.route("/truck-details/api/", methods=["GET"])
def Truck_Details():
Details = {"id": 2, "year": 2019, "model": ""}
return Details
if __name__ == "__main__":
app.run(debug=True)
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn