fastapi 依赖与中间件
fastapi dependency vs middleware
我是 fastapi 的新手。我使用过其他语言的多个 Web 框架,并发现了用于各种目的的中间件的通用模式。例如如果我有一个 API 路由想要进行身份验证,那么我会使用一个中间件来进行身份验证。如果我想增加传入的请求,我会使用中间件。 FastAPI 确实有中间件(文档中的一个非常小的部分)但也有依赖项。我一直在寻找验证我的 API 路由并开始寻找示例和我找到的所有示例都使用依赖项。推荐使用什么(依赖项或中间件)来验证 API 路由,为什么?
我的看法:
Dependency:
你用它来运行 编写变量、验证等代码。
Middleware:
您需要先检查一些东西,然后拒绝或将请求转发给您的逻辑。
中间件可以看作是依赖项的超集,因为后者是一种中间件,returns 可以在请求中使用的值。虽然,在中间件中,您可以记录您的请求或缓存结果并访问请求的响应(甚至转发请求,调用其他一些 API 等等)。
TL;DR
依赖项是处理请求之前所需的一种通用逻辑(例如,我需要与此令牌关联的用户 ID),而中间件可以做到这一点,它还可以访问对该请求的响应。 依赖项是创建用于身份验证的中间件的首选方式
我是 fastapi 的新手。我使用过其他语言的多个 Web 框架,并发现了用于各种目的的中间件的通用模式。例如如果我有一个 API 路由想要进行身份验证,那么我会使用一个中间件来进行身份验证。如果我想增加传入的请求,我会使用中间件。 FastAPI 确实有中间件(文档中的一个非常小的部分)但也有依赖项。我一直在寻找验证我的 API 路由并开始寻找示例和我找到的所有示例都使用依赖项。推荐使用什么(依赖项或中间件)来验证 API 路由,为什么?
我的看法:
Dependency:
你用它来运行 编写变量、验证等代码。Middleware:
您需要先检查一些东西,然后拒绝或将请求转发给您的逻辑。
中间件可以看作是依赖项的超集,因为后者是一种中间件,returns 可以在请求中使用的值。虽然,在中间件中,您可以记录您的请求或缓存结果并访问请求的响应(甚至转发请求,调用其他一些 API 等等)。
TL;DR
依赖项是处理请求之前所需的一种通用逻辑(例如,我需要与此令牌关联的用户 ID),而中间件可以做到这一点,它还可以访问对该请求的响应。 依赖项是创建用于身份验证的中间件的首选方式