如何使用 flask-injector 将接口作为参数注入函数

How to Inject Interface as a parameter to function using flask-injector

我正在使用 flask-injector 和 connexion 开发 API 应用程序。我有以下设置 -

界面 -

class RestaurantsProvider(Module):
@inject
def __init__(self, items: list=[]):
    self._items = items

@provider
def get(self, number_of_items: int=5) -> list:
    if not self._items:
        return []

    if number_of_items > len(self._items):
        number_of_items = len(self._items)

    return self._items

绑定 -

from connexion.resolver import RestyResolver
import connexion
from injector import Binder, CallableProvider
from flask_injector import FlaskInjector
from services.provider import RestaurantsProvider

def configure(binder: Binder) -> Binder:
    binder.bind(
        interface=RestaurantsProvider.RestaurantsProvider,
        to=  RestaurantsProvider.RestaurantsProvider([{"Name":"Fgh"}])
    );


if __name__ == '__main__':
   app = connexion.App(__name__, port=2508, 
           specification_dir='swagger/')
   app.add_api('restaurants.yaml', resolver=RestyResolver('api'))
   # app.run(ssl_context=('cert.pem','key.pem'))
   FlaskInjector(app=app.app, modules=[configure])
   app.run()

现在我想在这样的函数中注入这个接口

@inject(data_provider = RestaurantsProvider)
def search(data_provider) -> list:
    return data_provider.get()

但是较新版本的注入器 (0.13.0) 不允许参数化注入,我仔细阅读了文档,但无法弄清楚如何注入此函数的接口。

注意 - 此函数在 api.restaurants.py 中并且按预期被调用。

你能不能只使用@inject 然后:

search(data_provider: RestaurantsProvider)