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

特定路由的燒瓶中間件

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

問題描述

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

I made API Server with Python Flask-RESTful.

我的系統(tǒng)使用令牌認(rèn)證來驗(yàn)證權(quán)限.

My system use token authentication for verify permission.

所以,我添加了用于驗(yàn)證令牌的中間件.

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 會(huì)打印 gogo",但是每條路線都會(huì)打印 gogo".

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

也許每條路由都經(jīng)過中間件.

Maybe every route pass through with middleware.

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

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

推薦答案

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

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) 使用中間件.只需在請(qǐng)求路徑上添加條件即可.

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在特定藍(lán)圖之前設(shè)置函數(shù)列表.

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)

希望這會(huì)有所幫助.

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

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

相關(guān)文檔推薦

How should I verify a log message when testing Python code under nose?(在鼻子下測試 Python 代碼時(shí),我應(yīng)該如何驗(yàn)證日志消息?)
Patch __call__ of a function(修補(bǔ)函數(shù)的 __call__)
How to call self in a mock method of an object in Python?(如何在 Python 中對(duì)象的模擬方法中調(diào)用 self?)
Mocking only a single method on an object(僅模擬對(duì)象上的單個(gè)方法)
Mocking a subprocess call in Python(在 Python 中模擬子進(jìn)程調(diào)用)
Checking call order across multiple mocks(檢查多個(gè)模擬的調(diào)用順序)
主站蜘蛛池模板: 欧美在线一区二区三区 | 国际精品鲁一鲁一区二区小说 | 日本久久网站 | 精品永久| 欧美一区二区三区在线观看 | 精品免费视频 | 视频在线一区 | 99久久久久久久久 | 久久久涩| 久草在线 | av在线一区二区三区 | 久久精品国产亚洲一区二区 | 99精品久久久久 | 国产亚洲精品美女久久久久久久久久 | 欧美激情精品久久久久久变态 | 亚洲一区影院 | 国产精品久久久久久妇女 | 成人午夜精品一区二区三区 | 国产线视频精品免费观看视频 | 欧美日韩国产精品一区二区 | 国产日韩欧美中文 | 久久久噜噜噜久久中文字幕色伊伊 | 91精品国产麻豆 | 中文字幕欧美日韩 | 男人的天堂久久 | 国产乱码精品一区二区三区五月婷 | 亚洲福利 | 一区二区国产精品 | 亚洲欧洲一区二区 | 久久久精品影院 | 日本在线小视频 | 成人国产一区二区三区精品麻豆 | 亚洲午夜精品久久久久久app | av三级 | 视频一区二区三区中文字幕 | 国产精品福利网 | 黄色小视频大全 | 一区二区国产在线观看 | 精品美女视频在免费观看 | 亚洲精品在线播放 | 中文字幕亚洲精品 |