Элегантный Способ Создания URL с Помощью Flurl
Распространенной задачей при вызове веб-API или ресурсов из кода является создание URL-адреса и добавление необходимых параметров строки запроса. Обычно мы пишем что-то вроде этого:
var userId = 1;Типичная проблема с этим кодом заключается в том, что вы можете случайно пропустить
var completed = true;
var someParamValue = "abc";
Uri baseAddress = new Uri("https://example.com/");
Uri apiUrl = new Uri(
$"/todos?userId={userId}&completed={completed}" +
$"&someParamValue={someParamValue}",
UriKind.Relative);
?, & или =. Кроме этого, страдает читабельность кода, особенно если параметров много.Flurl - это современный, асинхронный, тестируемый, fluent-подобный конструктор URL-адресов для .NET. Он добавляет методы расширения к строкам, и помогает легко и элегантно добавлять сегменты пути, параметры запроса и т.д. Исходный код выше можно переписать с помощью Flurl так:
using Flurl;Помимо метода
string url = "https://example.com/"
.AppendPathSegment("todos")
.SetQueryParam("userId", userId)
.SetQueryParam("completed", completed)
.SetQueryParam("someParam", someParamValue);
SetQueryParam, существует и SetQueryParams, который принимает объект, любую коллекцию пар ключ-значение, кортеж или словарь. Методы расширения Flurl доступны как для String, так и для System.Uri. В любом случае результат легко конвертировать туда и обратно с помощью методов ToString() и ToUri():using Flurl;Помимо этого, Flurl предоставляет множество других полезных инструментов, вроде расширенного парсинга Url, различных вариантов кодирования добавляемых параметров и т.п. Загляните в документацию Flurl, чтобы узнать больше.
Uri url = "https://example.com/"
.AppendPathSegment("todos")
.SetQueryParams(new {
userId = userId,
completed = completed,
someParam = someParamValue
})
.ToUri();
Источник: https://kumarashwinhubert.com/flurl-the-elegant-way-to-build-urls-and-set-query-params-in-net