파이썬(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

     

     

     

    반응형