{"id":91171,"date":"2025-01-04T03:43:40","date_gmt":"2025-01-04T00:13:40","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/%d8%af%d8%b1%d8%a8%d8%a7%d8%b1%d9%87-uricomponentsbuilder-%d9%88-uricomponents-%d8%a7%d9%86%d8%ac%d9%85%d9%86-dev\/"},"modified":"2025-01-04T03:43:40","modified_gmt":"2025-01-04T00:13:40","slug":"%d8%af%d8%b1%d8%a8%d8%a7%d8%b1%d9%87-uricomponentsbuilder-%d9%88-uricomponents-%d8%a7%d9%86%d8%ac%d9%85%d9%86-dev","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/%d8%af%d8%b1%d8%a8%d8%a7%d8%b1%d9%87-uricomponentsbuilder-%d9%88-uricomponents-%d8%a7%d9%86%d8%ac%d9%85%d9%86-dev\/","title":{"rendered":"\u062f\u0631\u0628\u0627\u0631\u0647 UriComponentsBuilder \u0648 UriComponents &#8211; \u0627\u0646\u062c\u0645\u0646 DEV"},"content":{"rendered":"<div data-article-id=\"2185729\" id=\"article-body\">\n<p>UriComponentsBuilder \u0648 UriComponents \u06a9\u0644\u0627\u0633 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062f\u0631 Spring Framework \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0648 \u0627\u0635\u0644\u0627\u062d URL \u0647\u0627 \u0647\u0633\u062a\u0646\u062f. \u062f\u0631 \u0632\u06cc\u0631 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646\u0647\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code><span class=\"nc\">UriComponentsBuilder<\/span> <span class=\"n\">b1<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">UriComponentsBuilder<\/span><span class=\"o\">.<\/span><span class=\"na\">fromHttpUrl<\/span><span class=\"o\">(<\/span><span class=\"s\">\"https:\/\/www.example.com\/hotels\/42?filter=f1&amp;filter=f2&amp;option&amp;query=#hash\"<\/span><span class=\"o\">);<\/span>\n<span class=\"nc\">UriComponents<\/span> <span class=\"n\">c1<\/span> <span class=\"o\">=<\/span> <span class=\"n\">b1<\/span><span class=\"o\">.<\/span><span class=\"na\">build<\/span><span class=\"o\">();<\/span>\n<span class=\"n\">assertEquals<\/span><span class=\"o\">(<\/span><span class=\"s\">\"https\"<\/span><span class=\"o\">,<\/span> <span class=\"n\">c1<\/span><span class=\"o\">.<\/span><span class=\"na\">getScheme<\/span><span class=\"o\">());<\/span>\n<span class=\"n\">assertEquals<\/span><span class=\"o\">(<\/span><span class=\"s\">\"www.example.com\"<\/span><span class=\"o\">,<\/span> <span class=\"n\">c1<\/span><span class=\"o\">.<\/span><span class=\"na\">getHost<\/span><span class=\"o\">());<\/span>\n<span class=\"n\">assertEquals<\/span><span class=\"o\">(-<\/span><span class=\"mi\">1<\/span><span class=\"o\">,<\/span> <span class=\"n\">c1<\/span><span class=\"o\">.<\/span><span class=\"na\">getPort<\/span><span class=\"o\">());<\/span>\n<span class=\"n\">assertEquals<\/span><span class=\"o\">(<\/span><span class=\"nc\">Lists<\/span><span class=\"o\">.<\/span><span class=\"na\">list<\/span><span class=\"o\">(<\/span><span class=\"s\">\"hotels\"<\/span><span class=\"o\">,<\/span> <span class=\"s\">\"42\"<\/span><span class=\"o\">),<\/span> <span class=\"n\">c1<\/span><span class=\"o\">.<\/span><span class=\"na\">getPathSegments<\/span><span class=\"o\">());<\/span>\n<span class=\"n\">assertEquals<\/span><span class=\"o\">(<\/span><span class=\"s\">\"f1\"<\/span><span class=\"o\">,<\/span> <span class=\"n\">c1<\/span><span class=\"o\">.<\/span><span class=\"na\">getQueryParams<\/span><span class=\"o\">().<\/span><span class=\"na\">getFirst<\/span><span class=\"o\">(<\/span><span class=\"s\">\"filter\"<\/span><span class=\"o\">));<\/span>\n<span class=\"n\">assertNull<\/span><span class=\"o\">(<\/span><span class=\"n\">c1<\/span><span class=\"o\">.<\/span><span class=\"na\">getQueryParams<\/span><span class=\"o\">().<\/span><span class=\"na\">getFirst<\/span><span class=\"o\">(<\/span><span class=\"s\">\"option\"<\/span><span class=\"o\">));<\/span>\n<span class=\"n\">assertEquals<\/span><span class=\"o\">(<\/span><span class=\"s\">\"\"<\/span><span class=\"o\">,<\/span> <span class=\"n\">c1<\/span><span class=\"o\">.<\/span><span class=\"na\">getQueryParams<\/span><span class=\"o\">().<\/span><span class=\"na\">getFirst<\/span><span class=\"o\">(<\/span><span class=\"s\">\"query\"<\/span><span class=\"o\">));<\/span>\n<span class=\"n\">assertEquals<\/span><span class=\"o\">(<\/span><span class=\"s\">\"hash\"<\/span><span class=\"o\">,<\/span> <span class=\"n\">c1<\/span><span class=\"o\">.<\/span><span class=\"na\">getFragment<\/span><span class=\"o\">());<\/span>\n\n<span class=\"nc\">UriComponentsBuilder<\/span> <span class=\"n\">b2<\/span> <span class=\"o\">=<\/span> <span class=\"n\">b1<\/span><span class=\"o\">.<\/span><span class=\"na\">cloneBuilder<\/span><span class=\"o\">();<\/span>\n<span class=\"n\">b2<\/span><span class=\"o\">.<\/span><span class=\"na\">path<\/span><span class=\"o\">(<\/span><span class=\"s\">\"\/info\"<\/span><span class=\"o\">);<\/span>\n<span class=\"n\">assertEquals<\/span><span class=\"o\">(<\/span><span class=\"s\">\"https:\/\/www.example.com\/hotels\/42\/info?filter=f1&amp;filter=f2&amp;option&amp;query=#hash\"<\/span><span class=\"o\">,<\/span> <span class=\"n\">b2<\/span><span class=\"o\">.<\/span><span class=\"na\">build<\/span><span class=\"o\">().<\/span><span class=\"na\">toUriString<\/span><span class=\"o\">());<\/span>\n\n<span class=\"nc\">UriComponentsBuilder<\/span> <span class=\"n\">b3<\/span> <span class=\"o\">=<\/span> <span class=\"n\">b1<\/span><span class=\"o\">.<\/span><span class=\"na\">cloneBuilder<\/span><span class=\"o\">();<\/span>\n<span class=\"n\">b3<\/span><span class=\"o\">.<\/span><span class=\"na\">replacePath<\/span><span class=\"o\">(<\/span><span class=\"s\">\"\/info\/hotels\/42\"<\/span><span class=\"o\">);<\/span>\n<span class=\"n\">assertEquals<\/span><span class=\"o\">(<\/span><span class=\"s\">\"https:\/\/www.example.com\/info\/hotels\/42?filter=f1&amp;filter=f2&amp;option&amp;query=#hash\"<\/span><span class=\"o\">,<\/span> <span class=\"n\">b3<\/span><span class=\"o\">.<\/span><span class=\"na\">build<\/span><span class=\"o\">().<\/span><span class=\"na\">toUriString<\/span><span class=\"o\">());<\/span>\n\n<span class=\"nc\">UriComponentsBuilder<\/span> <span class=\"n\">b4<\/span> <span class=\"o\">=<\/span> <span class=\"n\">b1<\/span><span class=\"o\">.<\/span><span class=\"na\">cloneBuilder<\/span><span class=\"o\">();<\/span>\n<span class=\"n\">b4<\/span><span class=\"o\">.<\/span><span class=\"na\">replaceQuery<\/span><span class=\"o\">(<\/span><span class=\"kc\">null<\/span><span class=\"o\">);<\/span>\n<span class=\"n\">b4<\/span><span class=\"o\">.<\/span><span class=\"na\">fragment<\/span><span class=\"o\">(<\/span><span class=\"kc\">null<\/span><span class=\"o\">);<\/span>\n<span class=\"n\">b4<\/span><span class=\"o\">.<\/span><span class=\"na\">userInfo<\/span><span class=\"o\">(<\/span><span class=\"s\">\"user1\"<\/span><span class=\"o\">);<\/span>\n<span class=\"n\">assertEquals<\/span><span class=\"o\">(<\/span><span class=\"s\">\"https:\/\/user1@www.example.com\/hotels\/42\"<\/span><span class=\"o\">,<\/span> <span class=\"n\">b4<\/span><span class=\"o\">.<\/span><span class=\"na\">build<\/span><span class=\"o\">().<\/span><span class=\"na\">toUriString<\/span><span class=\"o\">());<\/span>\n\n<span class=\"nc\">UriComponentsBuilder<\/span> <span class=\"n\">b5<\/span> <span class=\"o\">=<\/span> <span class=\"n\">b1<\/span><span class=\"o\">.<\/span><span class=\"na\">cloneBuilder<\/span><span class=\"o\">();<\/span>\n<span class=\"n\">b5<\/span><span class=\"o\">.<\/span><span class=\"na\">queryParam<\/span><span class=\"o\">(<\/span><span class=\"s\">\"query\"<\/span><span class=\"o\">,<\/span> <span class=\"s\">\"q1\"<\/span><span class=\"o\">,<\/span> <span class=\"s\">\"q2\"<\/span><span class=\"o\">);<\/span>\n<span class=\"n\">assertEquals<\/span><span class=\"o\">(<\/span><span class=\"s\">\"https:\/\/www.example.com\/hotels\/42?filter=f1&amp;filter=f2&amp;option&amp;query=&amp;query=q1&amp;query=q2#hash\"<\/span><span class=\"o\">,<\/span> <span class=\"n\">b5<\/span><span class=\"o\">.<\/span><span class=\"na\">build<\/span><span class=\"o\">().<\/span><span class=\"na\">toUriString<\/span><span class=\"o\">());<\/span>\n\n<span class=\"nc\">UriComponentsBuilder<\/span> <span class=\"n\">b6<\/span> <span class=\"o\">=<\/span> <span class=\"n\">b1<\/span><span class=\"o\">.<\/span><span class=\"na\">cloneBuilder<\/span><span class=\"o\">();<\/span>\n<span class=\"n\">b6<\/span><span class=\"o\">.<\/span><span class=\"na\">replaceQueryParam<\/span><span class=\"o\">(<\/span><span class=\"s\">\"query\"<\/span><span class=\"o\">,<\/span> <span class=\"s\">\"q1\"<\/span><span class=\"o\">,<\/span> <span class=\"s\">\"q2\"<\/span><span class=\"o\">);<\/span>\n<span class=\"n\">assertEquals<\/span><span class=\"o\">(<\/span><span class=\"s\">\"https:\/\/www.example.com\/hotels\/42?filter=f1&amp;filter=f2&amp;option&amp;query=q1&amp;query=q2#hash\"<\/span><span class=\"o\">,<\/span> <span class=\"n\">b6<\/span><span class=\"o\">.<\/span><span class=\"na\">build<\/span><span class=\"o\">().<\/span><span class=\"na\">toUriString<\/span><span class=\"o\">());<\/span>\n\n<span class=\"n\">assertEquals<\/span><span class=\"o\">(<\/span><span class=\"s\">\"\/hotels\/42?filter=hot&amp;cold\"<\/span><span class=\"o\">,<\/span> <span class=\"nc\">UriComponentsBuilder<\/span><span class=\"o\">.<\/span><span class=\"na\">fromUriString<\/span><span class=\"o\">(<\/span><span class=\"s\">\"\/hotels\/42\"<\/span><span class=\"o\">).<\/span><span class=\"na\">query<\/span><span class=\"o\">(<\/span><span class=\"s\">\"filter={value}\"<\/span><span class=\"o\">).<\/span><span class=\"na\">buildAndExpand<\/span><span class=\"o\">(<\/span><span class=\"nc\">Collections<\/span><span class=\"o\">.<\/span><span class=\"na\">singletonMap<\/span><span class=\"o\">(<\/span><span class=\"s\">\"value\"<\/span><span class=\"o\">,<\/span> <span class=\"s\">\"hot&amp;cold\"<\/span><span class=\"o\">)).<\/span><span class=\"na\">toUriString<\/span><span class=\"o\">());<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>UriComponentsBuilder \u0648 UriComponents \u06a9\u0644\u0627\u0633 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062f\u0631 Spring Framework \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0648 \u0627\u0635\u0644\u0627\u062d URL \u0647\u0627 \u0647\u0633\u062a\u0646\u062f. \u062f\u0631 \u0632\u06cc\u0631 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646\u0647\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. UriComponentsBuilder b1 = UriComponentsBuilder.fromHttpUrl(&#8220;https:\/\/www.example.com\/hotels\/42?filter=f1&amp;filter=f2&amp;option&amp;query=#hash&#8221;); UriComponents c1 = b1.build(); assertEquals(&#8220;https&#8221;, c1.getScheme()); assertEquals(&#8220;www.example.com&#8221;, c1.getHost()); assertEquals(-1, c1.getPort()); assertEquals(Lists.list(&#8220;hotels&#8221;, &#8220;42&#8221;), c1.getPathSegments()); assertEquals(&#8220;f1&#8221;, c1.getQueryParams().getFirst(&#8220;filter&#8221;)); assertNull(c1.getQueryParams().getFirst(&#8220;option&#8221;)); assertEquals(&#8220;&#8221;, c1.getQueryParams().getFirst(&#8220;query&#8221;)); assertEquals(&#8220;hash&#8221;, c1.getFragment()); UriComponentsBuilder b2 = b1.cloneBuilder(); &hellip;<\/p>\n","protected":false},"author":2,"featured_media":91172,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/media2.dev.to\/dynamic\/image\/width=1000,height=500,fit=cover,gravity=auto,format=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6zxy77evtpkummmr1hpg.png","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-91171","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/91171","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=91171"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/91171\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/91172"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=91171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=91171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=91171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}