Flask에서 유효한 JSON 응답 반환

Salman Mehmood 2022년8월18일
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 반환 JSON 출력 1

Flask에서 jsonify()를 하나 더 가져와서 이 문제를 매우 빠르게 고칠 수 있습니다. 이것은 빌트인 Flask입니다. 타사 모듈을 사용할 필요가 없습니다.

목록이나 배열을 반환하는 위치로 이동하여 jsonify()로 래핑합니다. 이것을 저장하고 경로를 다시 테스트해 보겠습니다. 이제 유효한 JSON 응답을 받습니다.

네트워크 검사기에서 이것을 보면 애플리케이션의 콘텐츠 유형이 JSON임을 알 수 있습니다.

Flask 반환 JSON 출력 2

jsonify()를 사용하지 않고 Flask에서 단일 객체를 반환하는 방법을 살펴보겠습니다. 브라우저에서 살펴보겠습니다.

업그레이드된 버전을 사용하고 있기 때문에 작동합니다. Flask 버전 1.1.0 이상을 사용하는 경우 view에서 반환할 때 사전이 자동으로 사전을 JSON으로 변환하지만 Flask 버전이 1.1.0 미만인 경우 다음을 수행할 수 있습니다. 여러 객체를 반환할 때와 동일합니다.

오른쪽을 보면 콘텐츠 유형이 JSON인 것을 알 수 있으며, 응답 데이터를 꾸미기 위해 JSON 보기라는 Chrome 확장 프로그램을 사용하고 있습니다.

Flask 반환 JSON 출력 3

전체 소스 코드:

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)
Salman Mehmood avatar Salman Mehmood avatar

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