久久久久久久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(檢查多個模擬的調用順序)
主站蜘蛛池模板: 中文字幕一区在线观看视频 | 妞干网福利视频 | 国产成人精品网站 | 另类专区成人 | 日韩一区二区在线观看视频 | 91精品国产91久久久久久吃药 | 色资源站 | 韩国成人在线视频 | 久久99精品久久久97夜夜嗨 | 日韩视频在线免费观看 | 精品国产一区二区三区av片 | 国产丝袜av | 国产精品久久久久久网站 | 日韩国产中文字幕 | 欧美综合国产精品久久丁香 | 二区在线观看 | 欧美一级片a | 成人免费在线观看 | a级性视频 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 91视频在线| 最新日韩av| 黑人巨大精品欧美一区二区免费 | 美女三区| 国产亚洲一级 | 亚洲精品v日韩精品 | 在线播放国产视频 | 国产伦精品一区二区三区照片91 | 中文字幕在线二区 | 日韩精品一区二区三区在线播放 | 久久精品国产一区二区 | 亚洲视频在线播放 | 亚洲五码在线 | 一区二区视频 | 日韩午夜一区二区三区 | 国产欧美精品区一区二区三区 | 久久大陆| 亚洲精品视频免费观看 | 免费看国产a| 久久免费精品视频 | 欧美一区二区免费 |