본문 바로가기
Python/Python FAQ

Python 플라스크에서 POST된 JSON을 어떻게 받을 수 있나요?, How to get POSTed JSON in Flask?

by 베타코드 2023. 10. 24.
반응형

질문


간단한 Flask API를 구축하려고 합니다. 이 API에서는 POST된 JSON을 읽고 싶습니다. POST는 Postman Chrome 확장 프로그램을 사용하여 수행하며, POST된 JSON은 단순히 {"text":"lalala"}입니다. 다음 방법을 사용하여 JSON을 읽으려고 합니다:

@app.route('/api/add_message/<uuid>', methods=['GET', 'POST'])
def add_message(uuid):
    content = request.json
    print content
    return uuid

브라우저에서는 올바르게 GET에 입력한 UUID를 반환하지만 콘솔에서는 None만 출력됩니다. (예상대로 {"text":"lalala"}를 출력해야 합니다). Flask 메소드 내에서 POST된 JSON을 어떻게 가져올 수 있는지 아시는 분은 계십니까?


답변


우선, .json 속성은 request.get_json() 메서드로 위임하는 속성입니다. 이것이 왜 여기에서 None을 보는지에 대한 설명이 있습니다.

.json 속성과 .get_json() 메서드가 작동하려면 요청 콘텐츠 유형을 application/json으로 설정해야 합니다. 그렇지 않으면 둘 다 None을 반환합니다. Flask Request 문서를 참조하세요:

mimetype이 JSON을 나타내는 경우 (application/json, .is_json 참조), 파싱된 JSON 데이터입니다.

request.get_json()force=True 키워드 인자를 전달하여 콘텐츠 유형 요구 사항을 건너뛸 수 있습니다.

이 시점에서 (400 Bad Request 응답으로 이어질 수 있는) 예외가 발생하면 JSON 데이터가 잘못되었습니다. 어떤 방식으로든 손상되었습니다. JSON 유효성 검사기로 확인할 수 있습니다.

반응형

댓글