dor.gg

[Python] flask HTTP 메소드 POST

leui 2022. 2. 11. 13:42

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만 보내보자.

cilent

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

코드에서는 title = data["title"]의 형식으로 받았다. 

이외에도 PUT(update), DELETE(delete)등 여러 가지 메소드들이 존재한다.

 

기본적은 HTTP 메소드를 알아보았으니 다음 시간에는 Blueprint를 이용한 라우트 확장을 알아보자.

 

 

dor.gg