Flask - 2. Flask-RESTful


仮想環境の設定
pip install vritualenv

# 활성화
source venv/bin/activate 	# 맥, 리눅스
./venv/Scripts/activate.bat	# 윈도우즈

# 비활성화
deactivate
Flask-RESTful
設定
# flask도 같이 설치된다.
pip install Flask-RESTful
使用
from flask import Flask, request
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)

class Item(Resource):
    def get(self, name): # Path Parameter
        ...
        return {'result': name}, 200 # JSON return, Status Code
        
    def post(self, name):
    	data = request.get_json() 
    	pass
        
api.add_resource(Item, '/item/<string:name>')

app.run(port=5000, debug=True)
Resourceのクラスを継承する関数名はHTTPメソッドの役割を果たす.debug=Trueを設定すると、コードを変更して保存し、自動的に再起動します.request.get_json(silent=True) JSONパケットに到達するとNoneに戻る.
ショートフィルタ()
filter(조건 함수, 순회 가능한 데이터)
filter(lambda x: x['name'] == name, items)
next(filter(lambda x: x['name'] == name, items)) 
イテレーションnext()に戻る
Flask-JWT
設定
pip install Flask-JWT
使用
# security.py
from werkzeug.security import safe_str_cmp

def authenticate(username, password):
    user = DB에서 유저 가져오기
    if user and safe_str_cmp(user.password, password):
        return user
        
def identity(payload):
    user_id = payload['identity']
    return DB에서 유저 가져오기 by user_id
    
# app.py
from flask_jwt import JWT
from security import authenticate, identity

app.secret_key = 시크릿키설정

jwt = JWT(app, authenticate, identity)
app.pyの最後のコードは、/authエンドポイントを自動的に生成する.ユーザは、ユーザ名とパスワードをauthenticate関数に送信して認証し、JWTトークンを返す.ユーザが送信したトークンを送信すると、identity関数を使用してトークンに含まれる情報(ここではuser_id)を検索することができる.
HTTPヘッダライセンスにJWT[Toake]送信と書くべき!
ログインが必要な機能の設定
from flask_jwt import jwt_required

@jwt_required()
def get(self, name):
    pass
Flask-RESTful JSON Parser
from flask_restful import reqparse

class Item(Resource):
    parser = reqparse.RequestParser()
    parser.add_argument('price', type=float, 
        required=True, help='This field cannot be blank!')
        
    def put(self, name):
        data = Item.parser.parse_args()
        ...
parser.add_argument()に登録されている鍵しか使用できません.
Flask-RESTful公式ドキュメントでは、2.0版からすべての解析器機能が消失する可能性があると警告されています.