﻿
{"id":26925,"date":"2024-03-24T15:53:25","date_gmt":"2024-03-24T15:53:25","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=26925"},"modified":"2024-03-24T15:54:03","modified_gmt":"2024-03-24T15:54:03","slug":"asp-net-core-uygulamalari-icin-url-ayarlamanin-7-yolu","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-core-uygulamalari-icin-url-ayarlamanin-7-yolu\/","title":{"rendered":"Asp.NET Core Uygulamalar\u0131 \u0130\u00e7in URL Ayarlaman\u0131n 7 Yolu"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Malumunuz, Asp.NET Core uygulamalar\u0131n\u0131 geli\u015ftirirken lalettayin bir URL kullanamamakta, IPv4 ve IPv6 i\u00e7in loopback adresi e\u015fli\u011finde <em style=\"font-size:12px;\">http:\/\/localhost:5000<\/em>, <em style=\"font-size:12px;\">http:\/\/127.0.0.1:5000<\/em> veya <em style=\"font-size:12px;\">http:\/\/[::1]:5000<\/em> formatlar\u0131nda url&#8217;ler kullan\u0131labilmekte ya da geli\u015ftirmenin yap\u0131ld\u0131\u011f\u0131 makinede bulunan belirli bir IP adresi \u00fczerinden de<span style=\"font-size:12px;\">(misal olarak http:\/\/192.168.1.12:1453)<\/span> kullan\u0131m s\u00f6z konusu olabilmektedir. Bunlar\u0131n d\u0131\u015f\u0131nda belirli bir port \u00fczerinden de herhangi bir IP adresi <em style=\"font-size:12px;\">http:\/\/*:1461<\/em> misali kullan\u0131labilmektedir. Bu kal\u0131plar\u0131n hangisinin kullan\u0131laca\u011f\u0131 iste\u011fe ba\u011fl\u0131 olabilir lakin uygulamada hangi format\u0131n kullan\u0131laca\u011f\u0131 taraf\u0131m\u0131zca bildirilmesi gerekmektedir. \u0130\u015fte bu i\u00e7eri\u011fimizde bunu s\u00f6ylemenin yedi farkl\u0131 yolunu inceleyece\u011fiz. O halde buyurun ba\u015flayal\u0131m&#8230;<\/p>\n<ol>\n<li><strong><em>UseUrls()<\/em><\/strong><br \/>\nURL ayarlamak i\u00e7in en kolay y\u00f6ntem UseUrls metodudur diyebiliriz.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar builder = WebApplication.CreateBuilder(args);\r\n\r\nbuilder.WebHost.UseUrls(&quot;http:\/\/localhost:1453&quot;, &quot;https:\/\/localhost:1461&quot;);\r\n\r\nvar app = builder.Build();\r\n\r\napp.MapGet(&quot;\/&quot;, () =&gt; &quot;Merhaba D\u00fcnya...&quot;);\r\n\r\napp.Run();\r\n<\/pre>\n<\/div>\n<p>Asp.NET Core 1.0 s\u00fcr\u00fcm\u00fcnden beri kullan\u0131lan bir y\u00f6ntemdir.\n<\/li>\n<li><strong><em>WebApplication.Urls &#038; WebApplication.Run()<\/em><\/strong><br \/>\nBu y\u00f6ntemde de <code>WebApplication<\/code> nesnesi \u00fczerinden uygulama taraf\u0131ndan dinlenecek url&#8217;ler belirlenebilmektedir.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar builder = WebApplication.CreateBuilder(args);\r\n\r\nvar app = builder.Build();\r\n\r\napp.MapGet(&quot;\/&quot;, () =&gt; &quot;Merhaba D\u00fcnya...&quot;);\r\n\r\napp.Urls.Add(&quot;http:\/\/localhost:1453&quot;);\r\napp.Urls.Add(&quot;https:\/\/localhost:1461&quot;);\r\n\r\napp.Run();\r\n<\/pre>\n<\/div>\n<p>Benzer \u015fekilde <code>WebApplication<\/code> nesnesinin <code>Run<\/code> metodu \u00fczerinden de uygulama url&#8217;i belirlenebilmektedir.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar builder = WebApplication.CreateBuilder(args);\r\n\r\nvar app = builder.Build();\r\n\r\napp.MapGet(&quot;\/&quot;, () =&gt; &quot;Merhaba D\u00fcnya...&quot;);\r\n\r\napp.Run(&quot;https:\/\/*:1453&quot;);\r\n<\/pre>\n<\/div>\n<p>Tabi <code>Run<\/code> metodu e\u015fli\u011finde tek bir url&#8217;in belirlenebilece\u011fini s\u00f6ylemekte fayda vard\u0131r. Bu nedenle birden fazla url&#8217;in ayarlanmas\u0131 gereken durumlarda di\u011fer y\u00f6ntemlere ba\u015fvurulmas\u0131 gerekmektedir.\n<\/li>\n<li><strong><em>URL \u0130\u00e7in Environment Variables<\/em><\/strong><br \/>\nAsp.NET Core mimarisinde URL belirlerken genellikle uygulaman\u0131n farkl\u0131 ortamlarda farkl\u0131 URL&#8217;ler kullanabilece\u011fi \u015fekilde ayarlanmas\u0131 gerekebilir. URL&#8217;leri environment variables olarak ayarlamak, uygulaman\u0131n ta\u015f\u0131nabilirli\u011fini art\u0131rabilir ve birden \u00e7ok ortamda \u00e7al\u0131\u015fmas\u0131n\u0131 kolayla\u015ft\u0131rabilir. Kullan\u0131m\u0131 a\u015fa\u011f\u0131daki gibi i\u015fletim sistemine g\u00f6re farkl\u0131l\u0131k arz edebilir.<\/p>\n<p>Windows i\u015fletim sisteminde CMD veya PowerShell i\u00e7in;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nsetx ASPNETCORE_URLS &quot;http:\/\/localhost:1453&quot;\r\n<\/pre>\n<\/div>\n<p>Windows i\u015fletim sisteminde PowerShell i\u00e7in;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n$Env:ASPNETCORE_URLS=&quot;http:\/\/localhost:1453&quot;\r\n<\/pre>\n<\/div>\n<p>Unix tabanl\u0131 i\u015fletim sistemlerin(Linux, macOS vs.) i\u00e7in;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nexport ASPNETCORE_URLS=&quot;http:\/\/localhost:1454;https:\/\/localhost:1461&quot;\r\n<\/pre>\n<\/div>\n<\/li>\n<li><strong><em>Command Line Arguments<\/em><\/strong><br \/>\nAsp.NET Core mimarisinin yap\u0131land\u0131rma sisteminde url&#8217;i belirlemenin bir ba\u015fka yolu da command line&#8217;dan ge\u00e7mektedir. \u015e\u00f6yle ki;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ndotnet run -- --urls &quot;http:\/\/localhost:1453&quot;\r\n<\/pre>\n<\/div>\n<p>ya da<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ndotnet run -- --urls &quot;http:\/\/*:1453;http:\/\/localhost:1461&quot;\r\n<\/pre>\n<\/div>\n<p>Ayr\u0131ca a\u015fa\u011f\u0131daki gibi <code>--http_ports<\/code> ve <code>--https_ports<\/code> se\u00e7enekleri de kullan\u0131labilir.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ndotnet run -- --http_ports &quot;1453;1461&quot; --https_ports &quot;1915;1921&quot;\r\n<\/pre>\n<\/div>\n<\/li>\n<li><strong><em>appsettings.json<\/em><\/strong><br \/>\n<code>appsettings.json<\/code> ve ortama \u00f6zg\u00fc <code>appsettings.Development.json<\/code> ve <code>appsettings.Production.json<\/code> gibi varyasyonlar\u0131, Asp.NET Core yap\u0131land\u0131rmas\u0131nda olduk\u00e7a kolay bir yap\u0131land\u0131rma imkan\u0131 sa\u011flamaktad\u0131r. A\u015fa\u011f\u0131daki gibi pratik bir \u015fekilde url tan\u0131mlamas\u0131 yap\u0131labilmektedir.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n{\r\n  &quot;urls&quot;: &quot;http:\/\/*:1453&quot;,\r\n  &quot;Logging&quot;: {\r\n    &quot;LogLevel&quot;: {\r\n      &quot;Default&quot;: &quot;Information&quot;,\r\n      &quot;Microsoft.AspNetCore&quot;: &quot;Warning&quot;\r\n    }\r\n  },\r\n  &quot;AllowedHosts&quot;: &quot;*&quot;\r\n}\r\n<\/pre>\n<\/div>\n<\/li>\n<li><strong><em>launchSettings.json<\/em><\/strong><br \/>\nAsp.NET Core uygulamas\u0131n\u0131 development s\u00fcrecinde aya\u011fa kald\u0131r\u0131rken, \u00f6nceden tan\u0131mlanm\u0131\u015f \u00e7e\u015fitli url ve port bilgilerinin bulundu\u011fu profiller e\u015fli\u011finde \u00e7al\u0131\u015fma yapmam\u0131z\u0131 sa\u011flayan <code>launchSettings.json<\/code> dosyas\u0131 da konumuzun geleneksel \u00e7\u00f6z\u00fcm\u00fcn\u00fc bizlere sa\u011fl\u0131yor diyebiliriz.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n{\r\n  &quot;$schema&quot;: &quot;http:\/\/json.schemastore.org\/launchsettings.json&quot;,\r\n  &quot;iisSettings&quot;: {\r\n    &quot;windowsAuthentication&quot;: false,\r\n    &quot;anonymousAuthentication&quot;: true,\r\n    &quot;iisExpress&quot;: {\r\n      &quot;applicationUrl&quot;: &quot;http:\/\/localhost:1494&quot;,\r\n      &quot;sslPort&quot;: 44397\r\n    }\r\n  },\r\n  &quot;profiles&quot;: {\r\n    &quot;http&quot;: {\r\n      &quot;commandName&quot;: &quot;Project&quot;,\r\n      &quot;dotnetRunMessages&quot;: true,\r\n      &quot;launchBrowser&quot;: true,\r\n      &quot;launchUrl&quot;: &quot;swagger&quot;,\r\n      &quot;applicationUrl&quot;: &quot;http:\/\/localhost:5173&quot;,\r\n      &quot;environmentVariables&quot;: {\r\n        &quot;ASPNETCORE_ENVIRONMENT&quot;: &quot;Development&quot;\r\n      }\r\n    },\r\n    &quot;https&quot;: {\r\n      &quot;commandName&quot;: &quot;Project&quot;,\r\n      &quot;dotnetRunMessages&quot;: true,\r\n      &quot;launchBrowser&quot;: true,\r\n      &quot;launchUrl&quot;: &quot;swagger&quot;,\r\n      &quot;applicationUrl&quot;: &quot;https:\/\/localhost:7036;http:\/\/localhost:5173&quot;,\r\n      &quot;environmentVariables&quot;: {\r\n        &quot;ASPNETCORE_ENVIRONMENT&quot;: &quot;Development&quot;\r\n      }\r\n    },\r\n    &quot;IIS Express&quot;: {\r\n      &quot;commandName&quot;: &quot;IISExpress&quot;,\r\n      &quot;launchBrowser&quot;: true,\r\n      &quot;launchUrl&quot;: &quot;swagger&quot;,\r\n      &quot;environmentVariables&quot;: {\r\n        &quot;ASPNETCORE_ENVIRONMENT&quot;: &quot;Development&quot;\r\n      }\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<\/div>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere <code>profiles<\/code> alt\u0131nda tan\u0131mlanan profiller; &#8216;http&#8217;, &#8216;https&#8217; ve &#8216;IIS Express&#8217; olarak nitelendirilmi\u015flerdir. Bizler ek olarak a\u015fa\u011f\u0131daki gibi kendimize \u00f6zg\u00fc bir profil tan\u0131m\u0131nda bulunabilir ve uygulamay\u0131 bu profilin ayarlar\u0131nda aya\u011fa kald\u0131rabiliriz.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n{\r\n  .\r\n  .\r\n  .,\r\n  &quot;profiles&quot;: {\r\n    .\r\n    .\r\n    .,\r\n    &quot;CustomProfile&quot;: {\r\n      &quot;commandName&quot;: &quot;Project&quot;,\r\n      &quot;dotnetRunMessages&quot;: true,\r\n      &quot;launchBrowser&quot;: true,\r\n      &quot;applicationUrl&quot;: &quot;https:\/\/localhost:1453;http:\/\/localhost:1461&quot;,\r\n      &quot;environmentVariables&quot;: {\r\n        &quot;ASPNETCORE_ENVIRONMENT&quot;: &quot;Development&quot;\r\n      }\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<\/div>\n<p>Asp.NET Core mimarisinde <code>launchSettings.json<\/code> dosyas\u0131n\u0131n kullan\u0131lmas\u0131 i\u00e7in ekstradan bir \u015fey yap\u0131lmas\u0131na gerek duyulmamakta, uygulama aya\u011fa kald\u0131r\u0131l\u0131rken dosya otomatik olarak alg\u0131lanmaktad\u0131r. \u015e\u00f6yle ki; uygulamay\u0131 <code>dotnet run<\/code> komutu ile \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda uygulama default olarak &#8216;http&#8217; profili ayarlar\u0131nda aya\u011fa kald\u0131r\u0131lacakt\u0131r. E\u011fer ki var olan profillerden birinde aya\u011fa kald\u0131rmak istiyorsan\u0131z<br \/>\n<code>dotnet run --launch-profile \"https\"<\/code> \u015feklinde talimat\u0131n verilmesi gerekmektedir. Ee do\u011fal olarak kendi olu\u015fturdu\u011funuz profilde aya\u011fa kald\u0131rabilmek i\u00e7inse<br \/>\n<code>dotnet run --launch-profile \"CustomProfile\"<\/code> talimat\u0131n\u0131n verilmesi gerekmektedir.<\/p>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere bu dosya sayesinde environment yap\u0131land\u0131rmas\u0131 olduk\u00e7a kolay ve kullan\u0131\u015fl\u0131 bir hale getirilmi\u015ftir. T\u00fcm bu avantajlar\u0131na kar\u015f\u0131n, <code>launchSettings.json<\/code> dosyas\u0131n\u0131 kullanmaks\u0131z\u0131n uygulamay\u0131 aya\u011fa kald\u0131rmak istiyorsan\u0131z<br \/>\n<code>dotnet run --no-launch-profile<\/code> talimat\u0131n\u0131 verebilirsiniz.\n<\/li>\n<li><strong><em>KestrelServerOptions.Listen()<\/em><\/strong><br \/>\n\u015eimdiye kadar ele ald\u0131\u011f\u0131m\u0131z t\u00fcm yakla\u015f\u0131mlar Kestrel i\u00e7in URL&#8217;leri dolayl\u0131 olarak ayarlamaktad\u0131r. T\u00fcm bunlar\u0131n yerine do\u011frudan Kestrel \u00fczerinden de url yap\u0131land\u0131rmas\u0131nda bulunabiliriz.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing System.Net;\r\n\r\nvar builder = WebApplication.CreateBuilder(args);\r\n\r\nbuilder.WebHost.ConfigureKestrel(options =&gt;\r\n{\r\n    \/\/-&gt; http:\/\/localhost:1453\r\n    options.Listen(IPAddress.Loopback, port: 1453);\r\n    \/\/-&gt; http:\/\/*:1461\r\n    options.ListenAnyIP(1461);\r\n    \/\/-&gt; https:\/\/localhost:1915\r\n    options.ListenLocalhost(1915, listenOptions =&gt; listenOptions.UseHttps());\r\n    \/\/-&gt; https:\/\/*:1921a\r\n    options.ListenAnyIP(1921, listenOptions =&gt; listenOptions.UseHttps());\r\n});\r\n\r\nvar app = builder.Build();\r\n\r\napp.MapGet(&quot;\/&quot;, () =&gt; &quot;Merhaba D\u00fcnya...&quot;);\r\n\r\napp.Run();\r\n<\/pre>\n<\/div>\n<p>Kestrel&#8217;i yukar\u0131daki gibi hard-coded bir \u015fekilde yap\u0131land\u0131rabilece\u011fimiz gibi <code>appsettings.json<\/code> \u00fczerinden de a\u015fa\u011f\u0131daki gibi yap\u0131land\u0131rabiliriz.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n{\r\n\r\n  &quot;Kestrel&quot;: {\r\n    &quot;Endpoints&quot;: {\r\n      &quot;HttpLoopback&quot;: {\r\n        &quot;Url&quot;: &quot;http:\/\/localhost:1453&quot;\r\n      },\r\n      &quot;HttpAny&quot;: {\r\n        &quot;Url&quot;: &quot;http:\/\/*:1461&quot;\r\n      },\r\n      &quot;HttpsDefaultCert&quot;: {\r\n        &quot;Url&quot;: &quot;https:\/\/localhost:1915&quot;\r\n      },\r\n      &quot;HttpsInlineCertFile&quot;: {\r\n        &quot;Url&quot;: &quot;https:\/\/*:1921&quot;\r\n      }\r\n    }\r\n  },\r\n  &quot;Logging&quot;: {\r\n    &quot;LogLevel&quot;: {\r\n      &quot;Default&quot;: &quot;Information&quot;,\r\n      &quot;Microsoft.AspNetCore&quot;: &quot;Warning&quot;\r\n    }\r\n  },\r\n  &quot;AllowedHosts&quot;: &quot;*&quot;\r\n}\r\n<\/pre>\n<\/div>\n<p>B\u00f6ylece uygulaman\u0131n yap\u0131land\u0131rmas\u0131n\u0131 koddan ba\u011f\u0131ms\u0131z hale getirebilmekteyiz. Ayr\u0131ca bu yap\u0131land\u0131rma yakla\u015f\u0131m\u0131yla &#8216;Program.cs&#8217; \u00fczerinden <code>ConfigureKestrel<\/code> metodunu \u00e7a\u011f\u0131rmaya gerekte kalmamaktad\u0131r.\n<\/li>\n<\/ol>\n<p>Nihai olarak;<br \/>\nBu i\u00e7eri\u011fimizde, Asp.NET Core uygulamalar\u0131n\u0131n dinledi\u011fi url&#8217;leri ayarlayabilece\u011fimiz yedi farkl\u0131 yolu de\u011ferlendirmi\u015f bulunuyoruz. \u00c7al\u0131\u015fma hayat\u0131nda genel olarak development ortam\u0131 i\u00e7in <code>launchSettings.json<\/code>&#8216;\u0131 kullan\u0131yor olsak da di\u011fer y\u00f6ntemleri bilmek i\u015f s\u00fcre\u00e7lerinde i\u015finize yarayacakt\u0131r kanaatindeyim.<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Malumunuz, Asp.NET Core uygulamalar\u0131n\u0131 geli\u015ftirirken lalettayin bir URL kullanamamakta, IPv4 ve IPv6 i\u00e7in loopback adresi e\u015fli\u011finde http:\/\/localhost:5000, http:\/\/127.0.0.1:5000 veya http:\/\/[::1]:5000 formatlar\u0131nda url&#8217;ler kullan\u0131labilmekte ya da geli\u015ftirmenin yap\u0131ld\u0131\u011f\u0131 makinede bulunan belirli bir IP adresi&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":9596,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3102,4997],"tags":[5035,5034,5033,5037,5036,5038,5030,5032,5031],"class_list":["post-26925","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asp-net-core","category-asp-net-core-8","tag-appsettings-json","tag-command-line-arguments","tag-environment-variables","tag-kestrelserveroptions-listen","tag-launchsettings-json","tag-loopback","tag-useurls","tag-webapplication-run","tag-webapplication-urls"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/26925","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=26925"}],"version-history":[{"count":8,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/26925\/revisions"}],"predecessor-version":[{"id":26935,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/26925\/revisions\/26935"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/9596"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=26925"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=26925"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=26925"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}