美文网首页
Ocelot中文文档-委托处理程序

Ocelot中文文档-委托处理程序

作者: loogn | 来源:发表于2018-05-08 11:52 被阅读106次

Ocelot允许用户将委托处理程序添加到HttpClient传输中。 这个功能在github #208中提出,我确定它会以各种方式被使用。之后我们在GitHub#264中进行了扩展。

用法

为了将委托处理程序添加到HttpClient传输中,有两件重要的事情要做。

首先,为了创建一个可以用于委托处理程序的类,它必须如下所示。 我们将在asp.net core容器中注册这些处理程序,以便您可以将您已注册的其他服务注入到处理程序的构造函数中。

public class FakeHandler : DelegatingHandler
{
    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        //do stuff and optionally call the base handler..
        return await base.SendAsync(request, cancellationToken);
    }
}

Next you must add the handlers to Ocelot’s container either as singleton like follows..
其次,您必须将处理程序添加到Ocelot的容器,要么作为单例注册。

services.AddOcelot()
        .AddSingletonDelegatingHandler<FakeHandler>()
        .AddSingletonDelegatingHandler<FakeHandlerTwo>()

要么注册为临时的...

services.AddOcelot()
        .AddTransientDelegatingHandler<FakeHandler>()
        .AddTransientDelegatingHandler<FakeHandlerTwo>()

这两个Add方法都有一个名为global的参数,它默认为false。 如果它是false,那么DelegatingHandler需要通过ocelot.json设置特定的ReRoutes(稍后更多)。 如果设置为true,则它将成为全局处理程序,并将应用于所有ReRoutes。

例如:

services.AddOcelot()
        .AddSingletonDelegatingHandler<FakeHandler>(true)

或者临时注册

services.AddOcelot()
        .AddTransientDelegatingHandler<FakeHandler>(true)

最后,如果你想要ReRoute指定DelegatingHandlers为你的特定DelegatingHandlers,或全局(稍后会详细介绍)DelegatingHandlers,那么你必须将下面的json添加到ocelot.json中的特定ReRoute中。 数组中的名称必须与您的DelegatingHandlers类名匹配,以便Ocelot将它们匹配在一起。

"DelegatingHandlers": [
    "FakeHandlerTwo",
    "FakeHandler"
]

你可以有多个DelegatingHandlers,他们的运行顺序如下:

  1. 所有在服务中并且不在ocelot.json的DelegatingHandlers数组中的全局处理程序按加入的顺序排序。
  2. 所有非全局的DelegatingHandlers以及来自ocelot.json的DelegatingHandlers数组中的所有全局变量都按照它们在DelegatingHandlers数组中的顺序排列。
  3. 如果启用了跟踪,那么这一步是跟踪DelegatingHandler(看跟踪文档).
  4. 如果启用了QoS,那么这一步是QoS DelegatingHandler (看服务质文档).
  5. HttpClient发生HttpRequestMessage.

希望其他人会洞悉这个功能是很有用的!

previous
next

相关文章

  • Ocelot中文文档-委托处理程序

    Ocelot允许用户将委托处理程序添加到HttpClient传输中。 这个功能在github #208中提出,我确...

  • Ocelot中文文档-认证

    为了验证ReRoutes并随后使用Ocelot的任何基于声明的功能,如授权或使用令牌中的值修改请求。 用户必须像往...

  • Ocelot中文文档-授权

    Ocelot支持基于声明的授权。 这意味着如果您有要授权的路由,您可以将以下内容添加到您的ReRoute配置中。 ...

  • Ocelot中文文档-缓存

    目前Ocelot使用CacheManager项目提供了一些非常基本的缓存。这是一个了不起的项目,它解决了很多缓存问...

  • Ocelot中文文档-日志

    目前,Ocelot使用标准的日志记录接口ILoggerFactory/ILogger 。 在IOcelotL...

  • Ocelot中文文档-GraphQL

    好吧!你明白我的意思Ocelot并不直接支持GraphQL,但有这么多人问起它,我想表明整合graphql-dot...

  • Ocelot中文文档-管理

    Ocelot支持在运行时通过一个认证的Http API修改配置。有两种方式对其验证, 使用Ocelot的内置Ide...

  • Ocelot中文文档-Websockets

    Ocelot额外支持代理websockets。这个功能在问题 212中被提出。 为了是Ocelot代理websoc...

  • Ocelot中文文档-跟踪

    Ocelot使用一个杰出的项目Butterfly 提供了跟踪功能。 为了使用跟踪,请阅读Butterfly的文档。...

  • Ocelot中文文档-路由

    Ocelot的主要功能是接管进入的http请求并把它们转发给下游服务。目前是以另一个http请求的形式(将来可能是...

网友评论

      本文标题:Ocelot中文文档-委托处理程序

      本文链接:https://www.haomeiwen.com/subject/dzylrftx.html