파이썬(Python)/Flask

[HTTP]GET과 POST차이, 장단점, flask로 예제 실습(Python)

끄적끄적아무거나 2023. 8. 11. 08:56

 

 

 

 

 

 

 

[HTTP]GET과 POST차이, 장단점

 

HTTP의 GET과 POST는 HTTP 프로토콜을 통해 클라이언트(웹 브라우저 등)와 서버 간에 데이터를 주고받는 두 가지 주요한 방식입니다. 간단하게 말하면 웹서버에 페이지를 요청하거나 정보를 전달할 때 사용하는 프로토콜입니다. 

 

  • GET이란?

 

GET은 클라이언트가 서버에게 리소스의 정보를 요청할 때 사용하는 메서드입니다.URL의 쿼리 파라미터에 데이터를 포함시켜 요청합니다. 예를 들어  "example.com/resource?param1=value1&param2=value2" 는 param1과 param2의 값을 웹서버로 전달할 수 있게 해줍니다.

 

일반적으로  데이터를 검색하거나 조회할 때 사용합니다. 웹상에서 페이지를 넘길때 보통 확인 가능 합니다.

 

그리고 GET의 장점은 보통 캐싱이 가능하며, 동일한 요청은 반복적으로 서버로 전송되지 않고 캐시된 결과를 사용할 수 있습니다.브라우저 주소창에 직접 입력하는 등 간단한 요청에 사용됩니다.보안 측면에서는 민감한 데이터가 노출될 수 있습니다. 즉 정보가 웹브라우져 입력단에 드러나기 때문에 보안에는 취약합니다. 보안이 필요없는 정보들을 보낼 때 사용할 수 있습니다. 

 

 

 

  • POST란?

 

POST는 클라이언트가 서버에게 데이터를 전송하여 어떤 작업을 수행하거나 서버의 상태를 변경할 때 사용하는 메서드입니다.요청 데이터는 HTTP 요청 본문에 포함됩니다.데이터 크기에 제한이 있지만 GET보다는 더 많은 데이터를 전송할 수 있습니다.

 

주로 데이터를 생성, 수정, 삭제하는 작업에 사용됩니다.캐싱이 되지 않아 반복적인 요청에서 느릴 수 있습니다.

 

보안 측면에서 GET보다는 안전한데, 데이터가 URL에 노출되지 않기 때문입니다.

 

 

 

 

 

[HTTP]GET과 POST를 파이썬 flask로 구현하기

 

예제 코드, app.py>>

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/result', methods=['GET', 'POST'])
def result():
    if request.method == 'POST':
        data = request.form.get('data')
        return f"POSTed Data: {data}"
    else:
        data = request.args.get('data')
        return f"GET Data: {data}"

if __name__ == '__main__':
    app.run(debug=True)

@app.route('/'): 이 엔드포인트는 홈 페이지를 나타냅니다. 웹 브라우저에서 앱의 루트 주소를 입력하면 index() 함수가 실행되어 index.html 페이지로 전달됩니다.

 

@app.route('/result', methods=['GET', 'POST']): 이 엔드포인트는 /result 경로로 GET 및 POST 요청을 처리합니다. 요청의 메서드에 따라 다르게 동작합니다. POST 요청일 경우, 폼 데이터에서 'data' 필드를 가져와 "POSTed Data: [입력 데이터]"를 반환합니다. GET 요청일 경우, URL의 쿼리 파라미터에서 'data' 값을 가져와 "GET Data: [입력 데이터]"를 반환합니다.

 

 

 

 

예제코드, index.html>>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>GET and POST Example</title>
</head>
<body>
    <h2>Enter Data:</h2>
    <form action="/result" method="GET">
        <input type="text" name="data">
        <button type="submit">Submit with GET</button>
    </form>
    <form action="/result" method="POST">
        <input type="text" name="data">
        <button type="submit">Submit with POST</button>
    </form>
</body>
</html>

 

 

 

결과>>

위 결과는 GET을 사용해서 result에 인자 값을 바로 집어 넣어 출력한 화면 입니다. 

 

 

 

 

위 결과는 POST를 통해 정보를 보낸 방식입니다. 주소창에 인자 값이 GET과는 다르게 보이지 않습니다.

 

 

 

 

 

 

 

[HTTP]GET과 POST를 파이썬 flask로 구현 예제 다운로드

 

app.py
0.00MB

 

index.html
0.00MB