FAQ¶
兼容旧版本¶
原本v3.x重构时,没有兼容旧版本,即v2.x,所以旧版插件需要一一更新才行。
旧版要求插件通过 getPluginClass
函数返回一个类,在类中写方法注册tep、bep、hep等,所以更新插件时只需要将上述方法通过 register
函数重新返回即可,比如:
旧版插件代码:
def getPluginClass():
return MyPluginClass
class MyPluginClass(object):
def _after_func(self, response):
pass
def run(self):
pass
def register_tep(self):
return {
"after_request_hook": self._after_func,
"before_request_hook": xx
}
def register_bep(self):
return {}
def register_hep(self):
return {}
def register_yep(self):
return {}
def register_dfp(self):
return {}
兼容性修改(添加以下代码):
def register():
mpc = MyPluginClass()
return dict(
tep=mpc.register_tep(),
bep=mpc.register_bep(),
hep={"after_request": mpc._after_func, "before_request": xx, ...},
)
备注
新版不支持yep、dfp,而是改为其他方式。
hep在新版中去掉了
_hook
的后缀。hep中after_request和teardown_request,要注意函数的参数变化。
不过,在v3.3.1中,添加了自动兼容的代码,Flask-PluginKit在加载时根据参数会尝试加载并转化旧版的tep、bep、hep,所以插件就可以不用进行兼容性修改了。