질문
간단한 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 유효성 검사기로 확인할 수 있습니다.
댓글