목차
[HTTP]GET과 POST차이, 장단점
HTTP의 GET과 POST는 HTTP 프로토콜을 통해 클라이언트(웹 브라우저 등)와 서버 간에 데이터를 주고받는 두 가지 주요한 방식입니다. 간단하게 말하면 웹서버에 페이지를 요청하거나 정보를 전달할 때 사용하는 프로토콜입니다.
- GET이란?
GET은 클라이언트가 서버에게 리소스의 정보를 요청할 때 사용하는 메서드입니다.URL의 쿼리 파라미터에 데이터를 포함시켜 요청합니다. 예를 들어 "example.com/resource?param1=value1¶m2=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로 구현 예제 다운로드
'파이썬(Python) > Flask' 카테고리의 다른 글
[Python] flask Jinja2 for문, if문, 리스트 출력 예제 실습 및 풀이 (0) | 2023.08.17 |
---|---|
[Python]flask와 Jinja2 사용해서 변수 출력하기 예제(Variable) (0) | 2023.08.16 |
[Python] flask 간단한 REST API 구현하기(GET, 인자전달, Frontend, Backend) (0) | 2023.08.10 |
[Python] Flask로 파일 업로드 웹페이지 만들기(werkzeug, files, upload) (6) | 2021.11.27 |
[Python] Flask 메세지창 만들기(로그인페이지 예제) (Alert, Flashing, Popup) (0) | 2021.11.26 |