반응형
이번에는 request 에 대해서 알아보겠습니다.
먼저 HTTP 요청 방식은 GET, POST, PUT, PATCH, DELETE 등이 있습니다.
이것은 하나의 convention 으로, 클라이언트에서 요청할 때 method 를 지정하며, 서버쪽에서는 method 에 맞게 response 를 구현해 주면 됩니다.
curl 을 이용해서 테스트를 해 보겠습니다.
참고로 -X 옵션을 따로 지정하지 않으면 GET method 로 요청을 합니다.
GET 방식으로 요청
> curl -X GET http://localhost:5000
GET 요청에 대한 리턴
<p>Hello World</p>
POST 방식으로 요청
> curl -X POST http://localhost:5000
같은 url 을 요청했는데, POST 방식에서는 다음과 같이 리턴이 왔습니다.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>405 Method Not Allowed</title>
<h1>Method Not Allowed</h1>
<p>The method is not allowed for the requested URL.</p>
내용을 살펴보면 해당 method 를 지원하지 않는다고 합니다.
이슈를 해결하기 위해서 이전에 작성한 app.py 코드를 다음과 같이 수정해 봅니다.
from flask import Flask
app = Flask(__name__)
@app.route("/test")
def path_test():
return '<p>test</p>'
@app.route("/", methods=['GET', 'POST'])
def hello_world():
return '<p>Hello World</p>'
"/" 경로에 method 를 추가해 준 것입니다.
변경 후 재 실행 하면 POST 요청에 대한 리턴도 GET 과 같은 것을 확인 할 수 있습니다.
이번에는 method 에 따라 다른 결과를 보내주는 코드를 작성해 보겠습니다.
요청을 구분하기 위해서는 request.method 사용합니다.
먼저 request 를 import 해주고, 아래처럼 분기하면 요청 method 에 따라 다른 결과가 리턴 됩니다.
from flask import Flask, request
app = Flask(__name__)
@app.route("/test")
def path_test():
return '<p>test</p>'
@app.route("/", methods=['GET', 'POST'])
def hello_world():
if request.method == 'GET':
return '<p>GET: Hello World</p>'
elif request.method == 'POST':
return '<p>POST: Hello World</p>'
반응형
'프로그래밍 > Python - Flask' 카테고리의 다른 글
Python Flask를 이용해서 REST 서비스 구현하기 4 - request with data (0) | 2022.02.12 |
---|---|
Python Flask를 이용해서 REST 서비스 구현하기 2 - 경로 추가 (0) | 2022.01.14 |
Python Flask를 이용해서 REST 서비스 구현하기 1 - 기본 설정 (0) | 2021.12.17 |