{"id":444,"date":"2021-04-07T12:58:51","date_gmt":"2021-04-07T12:58:51","guid":{"rendered":"https:\/\/turtleflyblog.com\/?p=444"},"modified":"2022-02-28T09:23:14","modified_gmt":"2022-02-28T09:23:14","slug":"c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url","status":"publish","type":"post","link":"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/","title":{"rendered":"C# Flurl an elegant, fluent tool for generating a complex URL"},"content":{"rendered":"\n

When we use HttpCient to call web api and its url, we often use string method to concatenate url\u2019s parameter such as its id value. The example below shows one of the string methods we often use to concatenate url\u2019s parameters. <\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

The result console will show:<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

We can use either string.format method or C# 6 to set url\u2019s parameters. However, these methods will result in one key problem \u2013 readability. You may have noticed when there are more parameters we have to set, the messier we will get for generating a complete url. One good thing is that there is an effective URL generator- Flurl, which will be introduced in this article.<\/p>\n\n\n\n

Flurl can be downloaded by nuget<\/p>\n\n\n\n

PM> Install-Package Flurl<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

We can also use dotnet cli to download this library<\/p>\n\n\n\n

dotnet add package Flurl<\/p>\n\n\n\n

After we download this library. We can simplify the above code as shown below<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

The above code use AppendPathSegment and SetQueryParam methods from Flurl library to construct a complete url by combining its url\u2019s main path and its parameters.<\/p>\n\n\n\n

          We can also use SetQueryParams method. This method is acceptable to object as well as any other key-value data structure types such as dict and tuples.<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

I believe that it is beneficial to learn and use this library by effectively using this library when generating a complex url. This will improve the code readability.<\/p>\n","protected":false},"excerpt":{"rendered":"

When we use HttpCient to call web api and its url, we often use string method to concatenate url\u2019s parameter such as its id value. The example below shows one of the string methods we often use to concatenate url\u2019s parameters. The result console will show: We can use either string.format method or C# 6 […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"site-sidebar-layout":"default","site-content-layout":"default","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[33],"tags":[],"class_list":["post-444","post","type-post","status-publish","format-standard","hentry","category-programming-2"],"yoast_head":"\nC# Flurl an elegant, fluent tool for generating a complex URL - Who said turtle cannot fly<\/title>\n<meta name=\"description\" content=\"When we use HttpCient to call web api and its url, we often use string method to concatenate url\u2019s parameter such as its id value. The example below shows one of the string methods we often use to concatenate url\u2019s parameters.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C# Flurl an elegant, fluent tool for generating a complex URL - Who said turtle cannot fly\" \/>\n<meta property=\"og:description\" content=\"When we use HttpCient to call web api and its url, we often use string method to concatenate url\u2019s parameter such as its id value. The example below shows one of the string methods we often use to concatenate url\u2019s parameters.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/\" \/>\n<meta property=\"og:site_name\" content=\"Who said turtle cannot fly\" \/>\n<meta property=\"article:published_time\" content=\"2021-04-07T12:58:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-28T09:23:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/turtleflyblog.com\/wp-content\/uploads\/2021\/04\/1-1.png\" \/>\n<meta name=\"author\" content=\"Joseph\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joseph\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/\",\"url\":\"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/\",\"name\":\"C# Flurl an elegant, fluent tool for generating a complex URL - Who said turtle cannot fly\",\"isPartOf\":{\"@id\":\"https:\/\/turtleflyblog.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/turtleflyblog.com\/wp-content\/uploads\/2021\/04\/1-1.png\",\"datePublished\":\"2021-04-07T12:58:51+00:00\",\"dateModified\":\"2022-02-28T09:23:14+00:00\",\"author\":{\"@id\":\"https:\/\/turtleflyblog.com\/#\/schema\/person\/130c2e1bdce4a8ba27bfe14c65988172\"},\"description\":\"When we use HttpCient to call web api and its url, we often use string method to concatenate url\u2019s parameter such as its id value. The example below shows one of the string methods we often use to concatenate url\u2019s parameters.\",\"breadcrumb\":{\"@id\":\"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/#breadcrumb\"},\"inLanguage\":\"en-AU\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-AU\",\"@id\":\"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/turtleflyblog.com\/wp-content\/uploads\/2021\/04\/1-1.png?fit=553%2C189&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/turtleflyblog.com\/wp-content\/uploads\/2021\/04\/1-1.png?fit=553%2C189&ssl=1\",\"width\":553,\"height\":189},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/turtleflyblog.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C# Flurl an elegant, fluent tool for generating a complex URL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/turtleflyblog.com\/#website\",\"url\":\"https:\/\/turtleflyblog.com\/\",\"name\":\"Who said turtle cannot fly\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/turtleflyblog.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-AU\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/turtleflyblog.com\/#\/schema\/person\/130c2e1bdce4a8ba27bfe14c65988172\",\"name\":\"Joseph\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-AU\",\"@id\":\"https:\/\/turtleflyblog.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/539caa7bc4af75cd4ab82fc8d51935da?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/539caa7bc4af75cd4ab82fc8d51935da?s=96&d=mm&r=g\",\"caption\":\"Joseph\"},\"sameAs\":[\"https:\/\/turtleflyblog.com\/\/\"],\"url\":\"https:\/\/turtleflyblog.com\/author\/joseph\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C# Flurl an elegant, fluent tool for generating a complex URL - Who said turtle cannot fly","description":"When we use HttpCient to call web api and its url, we often use string method to concatenate url\u2019s parameter such as its id value. The example below shows one of the string methods we often use to concatenate url\u2019s parameters.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/","og_locale":"en_US","og_type":"article","og_title":"C# Flurl an elegant, fluent tool for generating a complex URL - Who said turtle cannot fly","og_description":"When we use HttpCient to call web api and its url, we often use string method to concatenate url\u2019s parameter such as its id value. The example below shows one of the string methods we often use to concatenate url\u2019s parameters.","og_url":"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/","og_site_name":"Who said turtle cannot fly","article_published_time":"2021-04-07T12:58:51+00:00","article_modified_time":"2022-02-28T09:23:14+00:00","og_image":[{"url":"https:\/\/turtleflyblog.com\/wp-content\/uploads\/2021\/04\/1-1.png","type":"","width":"","height":""}],"author":"Joseph","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Joseph","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/","url":"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/","name":"C# Flurl an elegant, fluent tool for generating a complex URL - Who said turtle cannot fly","isPartOf":{"@id":"https:\/\/turtleflyblog.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/#primaryimage"},"image":{"@id":"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/#primaryimage"},"thumbnailUrl":"https:\/\/turtleflyblog.com\/wp-content\/uploads\/2021\/04\/1-1.png","datePublished":"2021-04-07T12:58:51+00:00","dateModified":"2022-02-28T09:23:14+00:00","author":{"@id":"https:\/\/turtleflyblog.com\/#\/schema\/person\/130c2e1bdce4a8ba27bfe14c65988172"},"description":"When we use HttpCient to call web api and its url, we often use string method to concatenate url\u2019s parameter such as its id value. The example below shows one of the string methods we often use to concatenate url\u2019s parameters.","breadcrumb":{"@id":"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/#breadcrumb"},"inLanguage":"en-AU","potentialAction":[{"@type":"ReadAction","target":["https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/"]}]},{"@type":"ImageObject","inLanguage":"en-AU","@id":"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/#primaryimage","url":"https:\/\/i0.wp.com\/turtleflyblog.com\/wp-content\/uploads\/2021\/04\/1-1.png?fit=553%2C189&ssl=1","contentUrl":"https:\/\/i0.wp.com\/turtleflyblog.com\/wp-content\/uploads\/2021\/04\/1-1.png?fit=553%2C189&ssl=1","width":553,"height":189},{"@type":"BreadcrumbList","@id":"https:\/\/turtleflyblog.com\/en\/2021\/04\/07\/c-flurl-an-elegant-fluent-tool-for-generating-a-complex-url\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/turtleflyblog.com\/en\/"},{"@type":"ListItem","position":2,"name":"C# Flurl an elegant, fluent tool for generating a complex URL"}]},{"@type":"WebSite","@id":"https:\/\/turtleflyblog.com\/#website","url":"https:\/\/turtleflyblog.com\/","name":"Who said turtle cannot fly","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/turtleflyblog.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-AU"},{"@type":"Person","@id":"https:\/\/turtleflyblog.com\/#\/schema\/person\/130c2e1bdce4a8ba27bfe14c65988172","name":"Joseph","image":{"@type":"ImageObject","inLanguage":"en-AU","@id":"https:\/\/turtleflyblog.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/539caa7bc4af75cd4ab82fc8d51935da?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/539caa7bc4af75cd4ab82fc8d51935da?s=96&d=mm&r=g","caption":"Joseph"},"sameAs":["https:\/\/turtleflyblog.com\/\/"],"url":"https:\/\/turtleflyblog.com\/author\/joseph\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/posts\/444","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/comments?post=444"}],"version-history":[{"count":1,"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/posts\/444\/revisions"}],"predecessor-version":[{"id":659,"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/posts\/444\/revisions\/659"}],"wp:attachment":[{"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/media?parent=444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/categories?post=444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/tags?post=444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}