Dishka 开源项目教程

Dishka 开源项目教程

dishka Cute DI framework with agreeable API and everything you need dishka 项目地址: https://gitcode.com/gh_mirrors/di/dishka

1. 项目介绍

Dishka 是一个可爱的依赖注入(DI)框架,具有作用域和友好的 API。该项目旨在提供一个仅限于 IoC 容器的库,但使其真正有用。Dishka 专注于依赖注入的核心任务,不试图解决与依赖注入无关的问题。它通过作用域管理对象的生命周期,支持模块化提供者,并且具有简洁的 API。

2. 项目快速启动

安装 Dishka

首先,使用 pip 安装 Dishka:

pip install dishka

创建 Provider 实例

Provider 用于设置所有工厂以提供对象。以下是一个简单的示例:

from dishka import Provider, Scope

provider = Provider()

def get_a() -> A:
    return A()

def get_b(a: A) -> B:
    return B(a)

provider.provide(get_a, scope=Scope.APP)
provider.provide(get_b, scope=Scope.REQUEST)

创建 Container 实例

Container 用于管理依赖项的缓存并检索它们。以下是如何创建 Container 实例并进入 APP 作用域的示例:

from dishka import make_container

container = make_container(provider)

# 获取 APP 作用域的依赖项
a = container.get(A)

# 进入 REQUEST 作用域
with container() as request_container:
    b = request_container.get(B)
    a = request_container.get(A)

关闭 Container

在结束时关闭 Container:

container.close()

3. 应用案例和最佳实践

使用 Dishka 与 FastAPI 集成

Dishka 可以与 FastAPI 集成,以下是一个简单的示例:

from dishka.integrations.fastapi import FromDishka, inject, setup_dishka
from fastapi import FastAPI, APIRouter

app = FastAPI()
router = APIRouter()

@router.get("/")
@inject
async def index(a: FromDishka[A]) -> str:
    return str(a)

setup_dishka(container, app)

模块化提供者

将工厂拆分为多个类,使它们更简单且可重用:

class MyProvider(Provider):
    @provide(scope=Scope.APP)
    def get_a(self) -> A:
        return A()

    @provide(scope=Scope.REQUEST)
    def get_b(self, a: A) -> B:
        return B(a)

4. 典型生态项目

FastAPI

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API。Dishka 可以与 FastAPI 集成,提供依赖注入功能。

SQLAlchemy

SQLAlchemy 是一个 Python SQL 工具包和对象关系映射器(ORM)。Dishka 可以用于管理 SQLAlchemy 会话的生命周期。

AIOHTTP

AIOHTTP 是一个异步 HTTP 客户端/服务器框架。Dishka 可以与 AIOHTTP 集成,提供依赖注入功能。

通过以上内容,您可以快速上手 Dishka 项目,并了解其在实际应用中的使用方法和最佳实践。

dishka Cute DI framework with agreeable API and everything you need dishka 项目地址: https://gitcode.com/gh_mirrors/di/dishka

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

娄祺杏Zebediah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值