[Python] flask HTTP 메소드 POST
POST
POST 메소드는 리소스를 생성(Create)하기 위해 서버에 데이터를 보내는데 사용되는 메소드이다. GET은 데이터를 URL에 포함해야 하지만 POST 데이터를 body에 싣어서 보낼 수 있다. (body는 길이의 제한이 없다)
flask에서는 간단하게 데코레이터에 methods=["POST"] 를 적어줌으로써 구현이 가능하다.
from flask import Flask, request, jsonify
def create_app():
app = Flask(__name__)
@app.route('/post', methods=['POST'])
def create_post():
'''form'''
title = request.form.get('title')
content = request.form.get('content')
'''json'''
data = request.get_json()
return jsonify(
form = {
"title":title,
"content":content
},
json = {
"title":data["title"],
"content":data["content"]
}
)
return app
예를 들어 게시물의 제목과 내용을 서버에서 받는 상황이라고 가정하고
postman을 이용해서 form과 json으로 받아보자.
먼저 form이다.
클라이언트에서 title과 content를 각각 form 데이터 형식으로 서버로 보낸다.

이 데이터를 서버에서 request.form.get("title")과 request.form.get("content")로 받는다.
(클라이언트에서 보낸 key와 서버에서 받는 key가 동일해야 한다)

다음은 json이다.
클라이언트에서 중괄호({})에 "키":"값" 형식으로 보내는 형식을 json이라고 한다. 값에는 기본 데이터 타입인 문자열, 숫자, 배열, 불린 값 등 여러 가지 데이터가 들어갈 수 있다. 간단하게 title과 content만 보내보자.

flask 서버에서는 data = request.get_json()으로 먼저 받고 data["키"]같은 형식으로 접근할 수 있다.
코드에서는 title = data["title"]의 형식으로 받았다.

이외에도 PUT(update), DELETE(delete)등 여러 가지 메소드들이 존재한다.
기본적은 HTTP 메소드를 알아보았으니 다음 시간에는 Blueprint를 이용한 라우트 확장을 알아보자.
dor.gg