3. Flask (HTTP Method)

2021. 8. 5. 11:28SERVER/Flask

내가 생각하는 핵심 키워드

HTTP Method (포스팅 후 링크 추가 예정)

 

 

HTTP Method의 개념

[GET]

데이터를 URL 뒤에 ?와 함께 사용하여 전송하는 방식

일반적으로 인터넷에서 많이 사용되는 Method로 사용하기 편리하다

단, URL의 길이가 길어지며 전송되는 데이터의 모든 정보가 노출되기 때문에 보안에 매우 취약

(데이터의 길이 제한, 로그인 기능 등과 같은 요청에 대해 제약이 있다)

 

즉, 민감하지 않은 데이터라고 할 수 있는 범위 내에서는 유용하게 활용이 가능하다

 

 

[POST]

HTTP 통신에는 Header, Body가 있는데 여기서 Body에 <form> 이라는 태그 양식이 들어간다

POST는 이 <form>태그에 데이터를 넣어서 전송하는 방식으로 URL에 노출되지 않는다

URL에 노출되지 않기 때문에 데이터의 길이 제한이 없다 (많은 양의 데이터를 안전하게 전송 가능)

 


API에 Method 옵션 적용

app.route( )에 methods 옵션을 추가해서 해당 HTTP Method만 사용하도록 적용이 가능하다

@app.route("method1", methods=["GET"])
@app.route("method2", methods=["POST"])
@app.route("method3", methods=["GET", "POST"])

method1은 GET 요청만, method2는 POST 요청만, method3은 GET, POST 요청 모두 사용이 가능

 

@app.route("/", methods=["GET"])

해당 경로에 GET method로 요청되었을 때만 아래 함수를 실행시킨다는 의미(일종의 조건이다)

 

method = request.args.get("method")
result = "method, " + method
return jsonify(result)

args는 Arguments의 약자로 인수를 뜻한다(인수 = 매개 변수, 파라미터)

GET 요청은 URL 주소 뒤에 ?와 함께 key와 value 형태로 요청 파라미터가 전달된다

(파리미터가 하나 이상이라면 &로 연결되서 전송)

 

즉, ( )안에 담긴 "method" 라는 key 값을 args(인수)로 요청을 보내겠다는 의미다

위 형태를 method라는 변수에 담아서 JSON 형태로 리턴하는 과정이다 

 

여기서 request 요청을 담고 있는 변수의 명은 임의로 ("Key name")과는 전혀 관련이 없다

변수명은 아래와 같이 자유롭게 설정해도 된다는 말이다

참고로 key와 value는 딕셔너리의 형태이기 때문에 아래와 같은 방식도 가능하다

 

실행 후 로컬 주소 뒤에 ?와 함께 key=value 형태로 데이터를 전송하여 요청

return에 담겨있는 result의 형태가 JSON 형태로 화면에 잘 출력되는 것을 확인할 수 있다

 

 

위 결과는 서버에서 클라이언트에게 요청에 대한 응답을 보여주는 결과로

App.py 실행 후 url 뒤에 ?와 함께 key=value를 적어서 보내는 과정이 클라이언트의 요청에 해당

'SERVER > Flask' 카테고리의 다른 글

6. Flask (Authentication)  (0) 2021.08.06
5. Flask (CRUD)  (0) 2021.08.05
4. Flask (Blueprint, Jinja Template)  (0) 2021.08.05
2. Flask (JSON, URL)  (0) 2021.08.05
1. Flask (Prologue)  (0) 2021.08.05