当前位置: 首页 > news >正文

dw简述网站开发流程适合发软文的平台

dw简述网站开发流程,适合发软文的平台,wordpress 获取菜单id,举报不良网站信息怎么做参考原文地址:Managing Clients - Flurl 管理客户端 Flurl.Http 构建在堆栈之上System.Net.Http。如果您熟悉HttpClient,那么您可能听说过这个建议:不要为每个请求创建一个新客户端;重复使用它们,否则将面临后…

参考原文地址:Managing Clients - Flurl

管理客户端
        Flurl.Http 构建在堆栈之上System.Net.Http。如果您熟悉HttpClient,那么您可能听说过这个建议:不要为每个请求创建一个新客户端;重复使用它们,否则将面临后果。AFlurlClient包装单个HttpClient并绑定到相同的生命周期,因此建议是相似的。

无客户端使用
        如果您不想FlurlClient显式管理实例,则不需要;Flurl 会为你做这件事。事实上,在该网站的大多数示例中,客户端都明显缺席:

var result = await "https://some-api.com".GetJsonAsync<T>();

        但就像术语“无服务器”一样,Flurl 的“无客户端”模式并不意味着实际上没有客户端 - 它只是意味着您不需要显式处理它,并且您可以相信它正在被巧妙地管理。为此,Furll 使用 缓存并重用客户端实例FlurlHttp.Clients,这是 的全局单例实例IFlurlClientCache。客户端可以在启动时预先配置: 

FlurlHttp.ConfigureClientForUrl("https://some-api.com").WithSettings(settings => ...).WithHeaders(...)

注意:配置WithSettings部分详细介绍了其他相关方法。

        使用无客户端模式,对同一主机(或更准确地说,方案/主机/端口的相同组合)的所有调用都将重用同一客户端。任何客户端级别的配置(例如默认标头)都将伴随对该主机的所有调用。如果需要,您可以更改此缓存策略。例如,也许您希望对服务的每个版本使用不同的客户端,可通过自定义请求标头进行识别:

FlurlHttp.UseClientCachingStrategy(request =>// get the default host-based key by invoking the default caching strategy:var name = FlurlHttp.BuildClientNameByHost(request);// append the service version from a custom request header, if it exists:if (request.Headers.TryGetFirst("X-Service-Version", out var version))return $"{name}:{version}";return name;
});

        使用自定义缓存策略时,请确保在任何调用之前UseClientCachingStrategy调用.ConfigureClientForUrl

显式用法
        许多开发人员,尤其是那些想要严格遵守依赖注入原则的开发人员,可能会对管理客户端的全局静态上下文的存在感到厌烦,认为这可能导致更紧密的耦合并使系统更难以测试。由于这些原因,Flurl 支持另一种使用模式,其中客户端管理是明确的(并且几乎同样简单):

var client = new FlurlClient("https://some-api.com") // a base URL is optional.WithSettings(settings => ...).WithHeaders(...);var result = await client.Request("path").GetJsonAsync<T>();

        在这里,该Request方法(采用零个或多个字符串作为 的快捷方式AppendPathSegments)创建一个IFlurlRequest对象 - 与无客户端示例中的字符串扩展方法创建的对象相同。因此,在任何一种情况下都可以使用所有相同的流畅、可链接的方法。

使用依赖注入
        为了使 Flurl 完全对 DI 友好,仍然存在一个问题:我们不想new从我们的服务类内部启动该客户端;我们想注入一些东西。这里推荐的方法是IFlurlClientCache向容器注册为单例,绑定到组合根FlurlClientCache并可选地从组合根进行配置,然后注入到您的服务中。IFlurlClientCache支持命名客户端,这在概念上与 IHttpClientFactory 的命名客户端非常相似。

// at service registration:
services.AddSingleton<IFlurlClientCache>(sp => new FlurlClientCache().Add("MyCli", "https://some-api.com"));// in service class:
public class MyService : IMyService
{private readonly IFlurlClient _flurlCli;public MyService(IFlurlClientCache clients) {_flurlCli = clients.Get("MyCli");}
}

         与无客户端模式非常相似,所有客户端都由单个IFlurlClientCache. 但该单例现在由 IoC 容器而不是静态对象控制FlurlHttp。赢!

        在上面的示例中,clients.Get如果尚未创建指定的客户端(在本示例中是在服务注册时),则会引发异常。但在启动时预先创建客户端并不是严格要求的 -GetOrAdd可以改为使用:

_flurlCli = clients.GetOrAdd("MyCli", "https://some-api.com");

         和Add都GetOrAdd支持可选的第三个参数 -Action<IFlurlClientBuilder>允许您(懒惰地)配置客户端:

.Add("MyCli", "https://some-api.com", builder => builder.WithSettings(settings => ...).WithHeaders(...)

 翻译的可能不够准确,请见谅,请阅读原文:Managing Clients - Flurl,希望本文对你有帮助。

http://www.dt0577.cn/news/54213.html

相关文章:

  • 怎样做直播网站app做外贸网站的公司
  • 制作h5网页软件徐州关键词优化排名
  • 做网站能用微软宁波seo网络推广咨询价格
  • wordpress 视频自适应seo免费系统
  • 成都网站优化公司友情链接购买
  • 来宾网站建设百度广告运营
  • 免费网站建设 免备案郑州网络营销策划
  • 社区网站建设申请报告网络营销与推广
  • 做网站资料准备黄金网站软件app大全下载
  • 上虞网站建设文广网络百度网盘人工申诉电话
  • 哈尔滨网站开发培训东莞今日新闻大事
  • 家装网站模板下载发稿服务
  • 做网站的网页北京seo专员
  • 网站专题页是什么手游推广平台有哪些
  • 织梦手机网站模板杭州推广系统
  • 快递网站推广怎么做太原网络营销公司
  • 国务院关于加强政府网站建设网站建设公司官网
  • 网站制作与防护费用seowhy
  • 旅游商城网站建设seo培训网
  • asp网站上一篇下一篇代码排行榜百度
  • 做网络推广要做网站吗seo互联网营销培训
  • 苏州做网站推广的软文代发价格
  • 高端大气企业网站惠州seo快速排名
  • 建设网站论坛社群营销方案
  • 哈尔滨 做网站友情网
  • 做网站要在阿里云上买几个贡献网络营销师培训
  • 沈阳网站制作定制策划荆门网络推广
  • 网站必须备案吗seo技术蜘蛛屯
  • 大连住房和建设局网站万能bt搜索引擎网站
  • 网站建设公司需要哪些网络推广策划方案怎么写