본문 바로가기

BackEnd/Python-Flask

[백엔드] Flask: request.get_jason()

반응형

- 실전에 나가면 받을 API 설계서 형식은 하기와 같다.

- API 설계서를 보고 작업을 진행한다.

 

Request: 클라이언트가 서버에게 요청 보내는 것

Response: 서버가 클라이언트에게 응답을 보내는 것.

 

–Request–

POST http://127.0.0.1:6000/add_two_nums
{“x”:30,”y”:100}

 

–Response–

{“result”: 130}

 

아래에서 코드를 작성해보자.

 

from flask import Flask, jsonify, request
from http import HTTPStatus

app = Flask(__name__)

- 클라이언트로부터 뭔가를 받는 건 request 라이브러리에 기능이 다 있다.

 

@app.route('/add_two_nums', methods = ['POST'])
def add():
    # 클라이언트로부터 두 수를 받는다.
    data = request.get_json()
    ret = data['x'] + data['y']
    result = {"result" : ret}

    return jsonify(result)

- request.get_json(): 클라이언트에서 데이터를 받으면(request), flask에서 해당 함수를 이용해서 Json을 파이썬 데이터 형식으로 변환해서 가져올 수 있다.

- 물론 응답(respond)을 해줄 때도 Json 형식으로 전달해주어야한다.

 

웹브라우저에서 python app.py로 실행을 하면,

상기 이미지와 같이 제대로 뜨지 않는다.

‘Method Not Allowed’: 메소드가 유효하지 않다.

 

왜 그럴까?

 

- 위에서 언급했듯이, 우리가 사용하는 웹브라우저는 항상 GET 메소드로만 요청한다. GET이 디폴트이다. 

- 따라서, 필자가 위에서 작성한 코드 /add_two_nums의 경로도 똑같이 GET으로 요청했다. 

- 그렇지만, 코드에는 POST로 요청하게 명시하였고,  GET관련 명령어는 여기에 없다. 

ㄴ 필자는 POST만 허용했지, GET으로는 처리하지 않는다고 명시해놓은 것. 

 

- 우리는 API를 만든 다음에, 반드시 테스트를 해봐야한다. 

- 하나 만들때마다 직접 테스트 해봐야한다. 

- 툴을 이용해 테스트를 한다 -> Postman프로그램을 이용한다. 

 

 

 

postman 포스트 참고: https://yeo0616.tistory.com/168

반응형