GET, POST 요청 처리 및 파라미터 받기
카테고리: Python
업데이트:
이번에는 파이썬을 이용해 GET 방식과 POST 방식의 요청을 처리하는 방법과 파라미터를 주고받는 기능을 정리해 보려고 합니다.
1. GET과 POST란
GET과 POST는 서버에 무언가를 요청할 때 사용하는 방법입니다.
GET은 URL 주소 끝에 파라미터를 추가해 요청을 전송하는 방식으로 형식은 아래와 같습니다.
www.test.com/main?param1=value1¶m2=value2
GET 방식의 주요 특징은 4가지가 있습니다.
-
캐시가 가능하다.
GET 방식을 통해 요청을 하면 웹 캐시가 서버로부터 리소스를 다시 다운로드하지 않고 리소스의 복사본을 반환해 리소스의 낭비를 줄입니다.
-
브라우저의 히스토리에 남아있다.
-
즐겨찾기가 가능하다.
-
길이 제한이 있다.
브라우저에서 요청의 길이에 제한을 둔다고 합니다.
위 4가지 특징 때문에 주의해야 할 점이 2가지가 있습니다.
-
GET 요청으로 중요한 정보를 다루면 안 됩니다.
GET 방식은 주소창에 파라미터가 남기 때문에 중요한 정보를 히스토리창에서 확인이 가능해 보안을 위해 사용하면 안 됩니다.
-
GET 요청은 데이터를 요청할 때만 사용해야 합니다.
예를 들어 게시글을 삭제하는 요청을 GET 방식으로 구현하면 사용자가 히스토리를 이용해 다시 요청을 보낼 수 있어 다른 글까지 삭제가 가능합니다.
POST는 전송할 파라미터를 HTTP 메시지 내부에 담아서 서버에 요청을 보내는 방식입니다.
POST로 데이터를 전송할 때는 길이 제한이 따로 없어 용량이 큰 데이터를 보낼 때 사용하거나 주소창에 데이터가 안 보이기 때문에 보안이 필요한 부분에서 많이 사용됩니다. (완벽히 보안이 되는 것은 아닙니다.)
POST 방식의 특징은 4가지가 있습니다.
-
캐시가 되지 않습니다.
-
브라우저의 히스토리에 남아있지 않습니다.
-
즐겨찾기가 되지 않습니다.
-
데이터의 길이 제한이 없습니다.
2. Flask에서 GET, POST 요청 수신 받기
Flask에서 다음 코드와 같이 GET 방식과 POST 방식을 이용할 수 있습니다.
@bp.route('/', methods=('GET', 'POST'))
def GetData():
if request.method == "POST":
#POST 요청 처리
elif request.method == "GET":
#GET 요청 처리
그리고 파라미터를 주고받는 것은 다음과 같이 구현 가능합니다.
parameter_dict = request.args.to_dict()
print(parameter_dict["param1"])
댓글남기기