태그: ,

카테고리:

업데이트:


이번에는 파이썬을 이용해 GET 방식과 POST 방식의 요청을 처리하는 방법과 파라미터를 주고받는 기능을 정리해 보려고 합니다.

1. GET과 POST란

GET과 POST는 서버에 무언가를 요청할 때 사용하는 방법입니다.

GET은 URL 주소 끝에 파라미터를 추가해 요청을 전송하는 방식으로 형식은 아래와 같습니다.

www.test.com/main?param1=value1&param2=value2

GET 방식의 주요 특징은 4가지가 있습니다.

  1. 캐시가 가능하다.

    GET 방식을 통해 요청을 하면 웹 캐시가 서버로부터 리소스를 다시 다운로드하지 않고 리소스의 복사본을 반환해 리소스의 낭비를 줄입니다.

  2. 브라우저의 히스토리에 남아있다.

  3. 즐겨찾기가 가능하다.

  4. 길이 제한이 있다.

    브라우저에서 요청의 길이에 제한을 둔다고 합니다.

위 4가지 특징 때문에 주의해야 할 점이 2가지가 있습니다.

  1. GET 요청으로 중요한 정보를 다루면 안 됩니다.

    GET 방식은 주소창에 파라미터가 남기 때문에 중요한 정보를 히스토리창에서 확인이 가능해 보안을 위해 사용하면 안 됩니다.

  2. GET 요청은 데이터를 요청할 때만 사용해야 합니다.

    예를 들어 게시글을 삭제하는 요청을 GET 방식으로 구현하면 사용자가 히스토리를 이용해 다시 요청을 보낼 수 있어 다른 글까지 삭제가 가능합니다.

POST는 전송할 파라미터를 HTTP 메시지 내부에 담아서 서버에 요청을 보내는 방식입니다.

POST로 데이터를 전송할 때는 길이 제한이 따로 없어 용량이 큰 데이터를 보낼 때 사용하거나 주소창에 데이터가 안 보이기 때문에 보안이 필요한 부분에서 많이 사용됩니다. (완벽히 보안이 되는 것은 아닙니다.)

POST 방식의 특징은 4가지가 있습니다.

  1. 캐시가 되지 않습니다.

  2. 브라우저의 히스토리에 남아있지 않습니다.

  3. 즐겨찾기가 되지 않습니다.

  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"])

댓글남기기