NETでHTTPリクエストを効率的に処理するためのFlurl

NETでHTTPリクエストを効率的に処理するためのFlurl

Flurlは、モダンで流暢な、非同期サポート、テスト可能、移植可能なURL拡張、HTTPクライアントコンポーネントです。

最后更新 2022/06/24 21:45
SpringLeee
预计阅读 2 分钟
分类
.NET
标签
.NET C# Flurl

プロフィール:プロフィール

Flurlは、モダンで流暢な、非同期サポート、テスト可能、移植可能なURL拡張、HTTPクライアントコンポーネントです。

Urlの構築

これで、以下のアドレスでログインするインターフェイスができます。

https://www.some-api.com/login?name=Lee&pwd=123456

我们在处理这个地址的时候,会拼接 login, 然后拼接?号, 然后拼接参数,中间还要拼接& 得到最终的地址。

使用 Flurl 构建,首先需要通过 NuGet 安装 Flurl 组件。

var url = "http://www.some-api.com"
          .AppendPathSegment("login")
          .SetQueryParams(new
          {
              name = "Lee",
              pwd = "123456"
          });

これは最も簡単なGetリクエストであり、Uriの拡張メソッドを使用することもできます。

var url = new Uri("http://www.some-api.com").AppendPathSegment(...

Httpの拡張

Flurl 是模块化的,所以还需要安装 Flurl.Http

using Flurl;
using Flurl.Http;

var result = await "http://www.some-api.com".AppendPathSegment("login").GetAsync();

上面的代码会发送一个 GET 请求,并返回一个IFlurlResponse,可以得到 StatusCode,Headers 等,也可以通过 GetStringAsync 和 GetJsonAsync 得到响应内容。

レスポンスコンテンツを取得するだけの場合は、Flurlがいかに簡単かを見てみましょう:

T poco = await "http://api.foo.com".GetJsonAsync<T>();
string text = await "http://site.com/readme.txt".GetStringAsync();
byte[] bytes = await "http://site.com/image.jpg".GetBytesAsync();
Stream stream = await "http://site.com/music.mp3".GetStreamAsync();

*** 投稿を提出 **

await "http://api.foo.com".PostJsonAsync(new { a = 1, b = 2 });

** 動的なタイプ **

dynamic d = await "http://api.foo.com".GetJsonAsync();

** リクエストヘッダーの設定:**

await url.WithHeader("Accept", "text/plain").GetJsonAsync();

await url.WithHeaders(new { Accept = "text/plain", User_Agent = "Flurl" }).GetJsonAsync();

** 基本認証 **

await url.WithBasicAuth("username", "password").GetJsonAsync();

OAuth 2.0

await url.WithOAuthBearerToken("mytoken").GetJsonAsync();

** フォームを送信 **

await "http://site.com/login".PostUrlEncodedAsync(new {
    user = "user",
    pass = "pass"
});

HttpClient 管理

通常、HttpClientはあまり作成しません。接続が多すぎるとサーバーリソースが枯渇します。SocketException例外がスローされます。ほとんどの場合、HttpClientFactoryを使用します。

Flurlライブラリでは、HttpClientの内部管理インスタンスであり、通常はホストホストであり、HttpClientを作成し、再利用するためにキャッシュされます。

FlurlはIOCコンテナをよくサポートしており、依存性注入でも使用できます。

まとめまとめまとめ

FlurlコンポーネントはHttp 操作をより簡単にし、プロジェクトで試すことができます。その他の機能、テスト可能な設定可能な機能などがあり、公式サイトでドキュメントを見つけることができます。

私たちの公開番号“ハーフスタックプログラマー”に注目し、外国の優れたブログの翻訳とオープンソースプロジェクトの共有に焦点を当ててください。

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2026/04/22

バージョン別の. NETサポート状況(250 7 0 7更新)

仮想マシンとテストマシンを使用して、各バージョンのオペレーティングシステムの. NETサポートをテストします。オペレーティングシステムのインストール後、対応するランタイムを測定し、スターダストエージェントをパスとして実行できます。

继续阅读