久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

特定路由的燒瓶中間件

Flask middleware for specific route(特定路由的燒瓶中間件)
本文介紹了特定路由的燒瓶中間件的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我用 Python Flask-RESTful 制作了 API Server.

I made API Server with Python Flask-RESTful.

我的系統使用令牌認證來驗證權限.

My system use token authentication for verify permission.

所以,我添加了用于驗證令牌的中間件.

So, I added middleware for verify token.

比如這樣的代碼,

[中間件.py]

class Test(object):
    def __init__(self, app):
        self.app = app

    def __call__(self, environ, start_response):
        print("gogo")
        return self.app(environ, start_response)

[app.py]

from flask import Flask
from flask_restful import Api
from api.board import Article
from api.auth import Login, Register, RefreshToken
from middleware import Test


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

api.add_resource(Login, '/login')
api.add_resource(Register, '/register')
api.add_resource(RefreshToken, '/refresh')

# middleware here
app.wsgi_app = Test(app.wsgi_app)
api.add_resource(Article, '/article')

if __name__ == '__main__':
    app.run(debug=True)

我在 /article 之前插入 app.wsgi_app = Test(app.wsgi_app).

所以我希望只有訪問 /article 會打印 gogo",但是每條路線都會打印 gogo".

So I expect that only access to /article will print "gogo", however every route print "gogo".

也許每條路由都經過中間件.

Maybe every route pass through with middleware.

如何為特定路由應用中間件?(在這段代碼中,只有/article)

How can I apply middleware for specific route? (In this code, only /article)

推薦答案

有幾種方法可以在特定端點之前添加自定義處理.

There are a few ways how to add custom processing before specific endpoint.

1)使用python裝飾器:

1) Using python decorator:

from functools import wraps

def home_decorator():
    def _home_decorator(f):
        @wraps(f)
        def __home_decorator(*args, **kwargs):
            # just do here everything what you need
            print('before home')
            result = f(*args, **kwargs)
            print('home result: %s' % result)
            print('after home')
            return result
        return __home_decorator
    return _home_decorator


@app.route('/home')
@home_decorator()
def home():
    return 'Hello'

2) 使用 before_request

@app.before_request
def hook():
    # request - flask.request
    print('endpoint: %s, url: %s, path: %s' % (
        request.endpoint,
        request.url,
        request.path))
    # just do here everything what you need...

3) 使用中間件.只需在請求路徑上添加條件即可.

3) Using middleware. Just add condition on request path.

class Middleware:

    def __init__(self, app):
        self.app = app

    def __call__(self, environ, start_response):
        # not Flask request - from werkzeug.wrappers import Request
        request = Request(environ)
        print('path: %s, url: %s' % (request.path, request.url))
        # just do here everything what you need
        return self.app(environ, start_response)


@app.route('/home')
def home():
    return 'Hello'


app.wsgi_app = Middleware(app.wsgi_app)

4)您也可以使用before_request_funcs在特定藍圖之前設置函數列表.

4) Also you can use before_request_funcs to set list of functions before specific blueprint.

api = Blueprint('my_blueprint', __name__)


def before_my_blueprint():
    print(111)


@api.route('/test')
def test():
    return 'hi'


app.before_request_funcs = {
    # blueprint name: [list_of_functions]
    'my_blueprint': [before_my_blueprint]
}

app.register_blueprint(api)

希望這會有所幫助.

這篇關于特定路由的燒瓶中間件的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How should I verify a log message when testing Python code under nose?(在鼻子下測試 Python 代碼時,我應該如何驗證日志消息?)
Patch __call__ of a function(修補函數的 __call__)
How to call self in a mock method of an object in Python?(如何在 Python 中對象的模擬方法中調用 self?)
Mocking only a single method on an object(僅模擬對象上的單個方法)
Mocking a subprocess call in Python(在 Python 中模擬子進程調用)
Checking call order across multiple mocks(檢查多個模擬的調用順序)
主站蜘蛛池模板: 国产成人精品免费视频大全最热 | 日韩不卡视频在线 | 久草在线在线精品观看 | 国产精品美女在线观看 | 国产伊人久久久 | 国产jizz女人多喷水99 | 蜜桃精品在线 | 在线播放一区二区三区 | 亚洲欧美日韩在线一区二区 | 亚洲一区在线播放 | 久久久久久久久久久久久91 | 午夜影院黄 | 久久亚洲欧美日韩精品专区 | 国产免费av在线 | 亚洲一区二区在线电影 | 久久精品久久综合 | 欧美激情在线精品一区二区三区 | 国产精品.xx视频.xxtv | 欧美成人一区二区三区 | 狠狠夜夜 | 国产亚洲精品成人av久久ww | 中文字幕国产高清 | av一区二区三区四区 | 一区二区三区四区在线 | 米奇7777狠狠狠狠视频 | 国产在线视频一区二区 | 日本不卡一区二区三区在线观看 | 日韩视频免费看 | 毛色毛片免费看 | 免费成人高清在线视频 | 国产精品久久久久久久免费大片 | 久久成人精品视频 | 欧美精品在线播放 | 91精品久久久久久久99 | 91精品国产一区二区三区 | 欧美乱人伦视频 | 请别相信他免费喜剧电影在线观看 | 免费一区二区三区在线视频 | 日韩视频一区二区 | 国产精品久久久久久久久久免费 | 精品国产一区二区在线 |