끄적끄적 코딩일지

flask 에서 Cookie , Session Storage를 활용해 보자 본문

Python

flask 에서 Cookie , Session Storage를 활용해 보자

BaekGyuHyeon 2022. 5. 12. 09:23

API를 구현하면서 특정한 데이터를 반복적으로 요청하는 경우가 있다.

나의 경우에는 로그인한 사용자 ID를 요청하는 경우였다.

그 경우 Cookie나 Session Storage를 사용하면 쉽게 정보를 담고 뺄수 있다.

from flask import Flask,request,make_response,session

# sessionStorage를 사용하려면 secret key 값을 주어야 한다.
MYSECRET = 'this is my key'
app.secret_key = MYSECRET

#cookie 조회하기
@app.route('/getcookie/<key>',methods=['POST'])
def get_cookie(key):
	res = request.cookies.get(key)
    return res


 # make_response를 사용해서 cookie를 set한 페이지를 쉽게 반환해보자
 # make_response(render_template('index.html'))처럼 page를 반환할수 있다.
@app.route('/setcookie')
def set_cookie():
	key = request.form['key']
    value = request.form['value']
    res = make_response('your cookie is create')
    res.set_cookie(key,value)
   	# 혹은 간단하게
    request.cookies.add(key,value)
    return res

# cookie 삭제하기
@app.route('/delete_cookie/<key>')
def delete_cookie(key):
	res = make_response(key+'쿠키가 삭제되었습니다.')
	res.delete_cookie(key)
    #혹은
    request.cookie.pop(key,None)
    return res

# session storage에 저장된 값 조회하기
@app.route('/getsessiondata/<key>')
def get_session_data(key):
	res = session[key]
    return res
    
# session storage에 값 저장하기
@app.route('/setsessiondata',methods=['POST'])
def set_session_data():
	key = request.form['key']
    value = request.form['value']
	session[key] = value
    return '저장되었습니다.'

# session storage에 값 제거하기
@app.route('/removesessiondata/<key>',methods=['DELETE'])
def delete_session_data(key):
	session.pop(key,None)
    return key+'가 제거되었습니다.'

Cookie는 데이터를 브라우저에서 설정한 기간동안 계속 유지하고 있고 최대 4kb의 데이터를 저장할 수 있다.

반대로 session storage는 5Mb의 용량을 담을수 있고 session이 닫히면 함께 데이터를 삭제함으로 cookie보다 성능면으로나 보안면으로나 훨씬 좋다.