﻿
{"id":24115,"date":"2021-12-26T14:14:09","date_gmt":"2021-12-26T14:14:09","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=24115"},"modified":"2021-12-26T14:14:09","modified_gmt":"2021-12-26T14:14:09","slug":"c-10-global-using-directive","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/c-10-global-using-directive\/","title":{"rendered":"C# 10 &#8211; Global Using Directive"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Son zamanlarda .NET 6 ve C# 10 ile gelen yeniliklerde, kodun sadeli\u011fine ve teknik a\u00e7\u0131dan do\u011frudan do\u011fruya i\u015flevsel amac\u0131n\u0131 ger\u00e7ekle\u015ftirmeye odaklan\u0131ld\u0131\u011f\u0131 dikkatinizi \u00e7ekmi\u015ftir! Buna en g\u00fczel \u00f6rnek, Asp.NET Core 6&#8217;da gelen sadele\u015ftirilmi\u015f konfig\u00fcrasyon yap\u0131lanmas\u0131 olabilir. Art\u0131k namespace bloklar\u0131, metot scope&#8217;lar\u0131 vs. gibi basmakal\u0131p kod y\u0131\u011f\u0131nlar\u0131 aras\u0131nda \u00e7al\u0131\u015fmaktan ziyade, sadele\u015ftirilmi\u015f ve direkt i\u015fleve odaklanm\u0131\u015f konfig\u00fcrasyonlar\u0131 bar\u0131nd\u0131ran yeni yakla\u015f\u0131mla temeller at\u0131lmakta ve .NET a\u00e7\u0131s\u0131ndan olmas\u0131 gereken \u00e7a\u011fda\u015fl\u0131k sergilenmektedir. Bu i\u00e7eri\u011fimizde bu \u00e7a\u011fda\u015fla\u015fma ad\u0131mlar\u0131ndan biri olan ve C# 10 ile gelen <em>global using directive<\/em> \u00f6zelli\u011fini inceleyecek ve l\u00fczumsuz kodlardan ar\u0131nd\u0131r\u0131lm\u0131\u015f bir yap\u0131ya ge\u00e7i\u015fin k\u00fc\u00e7\u00fck ama anlaml\u0131 bir ad\u0131m\u0131n\u0131 atm\u0131\u015f olaca\u011f\u0131z.<\/p>\n<h3 style=\"color:#e83e8c;\">C# 10 \u00d6ncesi&#8230;<\/h3>\n<p><em>Global using directive<\/em> \u00f6zelli\u011fine de\u011finmeden \u00f6nce kodun sadeli\u011fine odaklanan C# 10&#8217;un bu konuda nas\u0131l bir yakla\u015f\u0131m sergiledi\u011fini ortaya koyabilmek i\u00e7in \u00f6nceki s\u00fcr\u00fcmlerden net bir \u00f6rnek sunmakta fayda g\u00f6rmekteyim&#8230;<\/p>\n<p>Her yaz\u0131l\u0131mc\u0131 taraf\u0131ndan a\u015fikard\u0131r ki, bir programlama dilinin en sade hali &#8216;merhaba d\u00fcnya&#8217; \u00e7\u0131kt\u0131s\u0131n\u0131 verecek program\u0131 in\u015fa edebilmekten ge\u00e7mektedir. Haliyle C# programlama dilinin 10. versiyonundan \u00f6nceki haliyle ilgili program\u0131 nas\u0131l bir y\u0131\u011f\u0131nla in\u015fa etti\u011fimizi inceleyelim&#8230;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing System;\r\n\r\nnamespace MerhabaDunya\r\n{\r\n    class Program\r\n    {\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            Console.WriteLine(&quot;Merhaba d\u00fcnya...&quot;);\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<\/div>\n<p>Sizce de, bir &#8216;merhaba d\u00fcnya&#8217; \u00e7\u0131kt\u0131s\u0131 i\u00e7in bunca zahmete de\u011fer mi? Evet, bendeniz dahil binlerce yaz\u0131l\u0131mc\u0131 y\u0131llarca bu zahmete katlanm\u0131\u015f olabiliriz. Ama bu l\u00fczumsuz kod y\u0131\u011f\u0131n\u0131yla ha\u015f\u0131r ne\u015fir olmad\u0131\u011f\u0131m\u0131z anlam\u0131na gelmemektedir. Bilenleri ge\u00e7tim, yaz\u0131l\u0131ma dair hi\u00e7 bilgisi olmayan ve s\u0131f\u0131rdan programlama dilini \u00f6\u011frenmeye \u00e7al\u0131\u015fan yeni adaylara &#8216;merhaba d\u00fcnya&#8217; \u00e7\u0131kt\u0131s\u0131n\u0131 yazd\u0131rabilmek i\u00e7in &#8216;namespace&#8217;, &#8216;class&#8217;, &#8216;scope&#8217; ve daha bir\u00e7ok yap\u0131y\u0131 tan\u0131tmam\u0131z gerekmekte ya da bunlar\u0131 sonradan tan\u0131tmak \u00fczere g\u00f6zard\u0131 ederek, direkt olarak<br \/>\n<span style=\"font-size:14px;\">&#8216;<code style=\"color:red;\">Console.WriteLine(\"Merhaba d\u00fcnya...\");<\/code> kodunu yaz, ge\u00e7&#8230;&#8217;<\/span><br \/>\ndememiz gerekmektedir. Nihayetinde programlama d\u00fcnyas\u0131yla yeni tan\u0131\u015fan bir \u00e7ocu\u011fun dahi kod yazmaya odaklanmas\u0131 C# ile ilk etapta olduk\u00e7a zor ve zahmetli olabilmekte ve ister istemez g\u00f6z korkusu ya da \u00f6nyarg\u0131ya sebebiyet verebilmektedir. <span style=\"font-size:10px;\">Misal olarak <em style=\"color:orange;\">Python<\/em> dilinin, g\u00fcc\u00fcn\u00fc performans\u0131ndan ziyade sade ve i\u015fleve odakl\u0131 yap\u0131s\u0131ndan ald\u0131\u011f\u0131n\u0131 ve bu sebepten dolay\u0131 pop\u00fclaritesinin g\u00fcn ge\u00e7tik\u00e7e h\u0131zl\u0131ca artt\u0131\u011f\u0131n\u0131 s\u00f6yleyebiliriz. O y\u00fczden programlamaya yeni ba\u015flayanlara C# ya da Java&#8217;dan ziyade hakl\u0131 olarak Python \u00f6nerilmektedir.<\/span><\/p>\n<p>\u0130\u015fte bu duruma C#, 9.0 versiyonu ile uyanmakta ve b\u00fcy\u00fck fark\u0131 yaratabilmek i\u00e7in <a href=\"https:\/\/www.gencayyildiz.com\/blog\/c-9-0-top-level-statements\/\" rel=\"noopener\" target=\"_blank\">Top-Level Statements<\/a> \u00f6zelli\u011fiyle sadele\u015ftirme devriminin ilk ad\u0131m\u0131n\u0131 atmaktad\u0131r.<\/p>\n<p>C# 10 ile gelinen son noktada ilgili kod a\u015fa\u011f\u0131daki gibi yaz\u0131lmaktad\u0131r;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nConsole.WriteLine(&quot;Merhaba d\u00fcnya...&quot;);\r\n<\/pre>\n<\/div>\n<p>Nas\u0131l ama? Harika de\u011fil mi? Art\u0131k basit kodlar\u0131m\u0131z\u0131 in\u015fa ederken l\u00fczumsuz yere &#8216;namespace&#8217; tan\u0131mlar\u0131na ve scope&#8217;lara bo\u011fulmaktan ziyade, direkt sade bir \u015fekilde amaca odaklanabilmekteyiz.<\/p>\n<p>Evet, \u015fimdi C#&#8217;\u0131n radikal bir sadele\u015ftirme politikas\u0131 g\u00fctt\u00fc\u011f\u00fc konusunda mutab\u0131ksak e\u011fer esas konumuza gelebilir ve <em>Global Using Directive<\/em>&#8216;in bu politikada nas\u0131l bir rol oynad\u0131\u011f\u0131n\u0131 inceleyebiliriz.<\/p>\n<h3 style=\"color:#e83e8c;\">Global Using Directive<\/h3>\n<p>C# programlama dilinde <code>using<\/code> direktifi bir\u00e7ok amaca hizmet etmektedir. <span style=\"font-size:13px;\">(bknz : <a href=\"https:\/\/www.gencayyildiz.com\/blog\/cta-using-blogu\/\" rel=\"noopener\" target=\"_blank\">using Blo\u011fu<\/a>, <a href=\"https:\/\/www.gencayyildiz.com\/blog\/c-6-0-static-usingmembers\/\" rel=\"noopener\" target=\"_blank\">Static Using<\/a>, <a href=\"https:\/\/www.gencayyildiz.com\/blog\/c-8-0-using-declarations\/\" rel=\"noopener\" target=\"_blank\">Using Declarations<\/a>)<\/span><\/p>\n<p>Bu ama\u00e7lar aras\u0131ndan en \u00e7ok kullan\u0131ld\u0131\u011f\u0131 nokta &#8216;namespace&#8217; bildirisidir diyebiliriz.<\/p>\n<p>Nihayetinde bir kodu in\u015fa ederken farkl\u0131 namespace&#8217;lerdeki s\u0131n\u0131flardan istifade etmek icap edecektir ve her bir s\u0131n\u0131f \u00e7a\u011fr\u0131m\u0131nda a\u015fa\u011f\u0131daki \u015fekilde tam adlar\u0131yla at\u0131fta bulunmaktan ziyade,<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2021\/12\/C-10-Global-Using-Directive.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2021\/12\/C-10-Global-Using-Directive.png\" alt=\"C# 10 - Global Using Directive\" width=\"645\" height=\"22\" class=\"aligncenter size-full wp-image-24143\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2021\/12\/C-10-Global-Using-Directive.png 645w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2021\/12\/C-10-Global-Using-Directive-300x10.png 300w\" sizes=\"auto, (max-width: 645px) 100vw, 645px\" \/><\/a>bu kodlar\u0131 <code>using<\/code> sayesinde k\u0131saltarak a\u015fa\u011f\u0131daki gibi kullanmay\u0131 tercih etmekteyiz.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2021\/12\/C-10-Global-Using-Directive-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2021\/12\/C-10-Global-Using-Directive-1.png\" alt=\"C# 10 - Global Using Directive\" width=\"379\" height=\"53\" class=\"aligncenter size-full wp-image-24144\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2021\/12\/C-10-Global-Using-Directive-1.png 379w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2021\/12\/C-10-Global-Using-Directive-1-300x42.png 300w\" sizes=\"auto, (max-width: 379px) 100vw, 379px\" \/><\/a><\/p>\n<p>Bu durumda da y\u00fczlerce kod dosyas\u0131nda ayn\u0131 namespace&#8217;lerin tekrar tekrar <code>using<\/code> ile bildirildi\u011fini g\u00f6rmekteyiz. C# 10 ile gelen <em>global using directive<\/em> \u00f6zelli\u011fi sayesinde genel anlamda kullan\u0131lan namespace bildirimlerini merkezi bir dosya \u00fczerinde tan\u0131mlayarak uygulama bazl\u0131 bir hale getirebilmekteyiz. B\u00f6ylece kodun okunabilirli\u011fi rahatlamakta ve uygulama a\u00e7\u0131s\u0131ndan da her kod dosyas\u0131 ayn\u0131 basmakal\u0131p ifadelerden ar\u0131nd\u0131r\u0131lmaktad\u0131r.<\/p>\n<h3 style=\"color:#e83e8c;\">Global Using Directive \u00d6zelli\u011fi Nas\u0131l Kullan\u0131l\u0131r?<\/h3>\n<p><em>Global using directive<\/em> \u00f6zelli\u011fini kullanabilmek i\u00e7in; biri <u>.csproj dosyas\u0131ndan<\/u> bir di\u011fer ise kendi irademizle global using tan\u0131mlar\u0131n\u0131 olu\u015fturdu\u011fumuz <u>.cs dosyas\u0131ndan<\/u> olmak \u00fczere iki farkl\u0131 y\u00f6ntem mevcuttur. \u015eimdi gelin bu iki y\u00f6ntemi ayr\u0131 ayr\u0131 inceleyelim.<\/p>\n<ol>\n<li><em><strong>.csproj Dosyas\u0131ndan Global Using<\/strong><\/em><br \/>\nGlobal using \u00f6zelli\u011fi i\u00e7in uygulaman\u0131n .csproj dosyas\u0131nda <code style=\"color:red;\">&lt;ItemGroup&gt;...&lt;\/ItemGroup&gt;<\/code> etiketi aras\u0131na a\u015fa\u011f\u0131daki gibi <code>Using<\/code> tan\u0131mlamalar\u0131n\u0131n yaz\u0131lmas\u0131 yeterlidir.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n&lt;Project Sdk=&quot;Microsoft.NET.Sdk&quot;&gt;\r\n\r\n\t&lt;PropertyGroup&gt;\r\n\t\t&lt;OutputType&gt;Exe&lt;\/OutputType&gt;\r\n\t\t&lt;TargetFramework&gt;net6.0&lt;\/TargetFramework&gt;\r\n\t\t&lt;Nullable&gt;enable&lt;\/Nullable&gt;\r\n\t\t&lt;ImplicitUsings&gt;enable&lt;\/ImplicitUsings&gt;\r\n\t&lt;\/PropertyGroup&gt;\r\n\r\n\t&lt;ItemGroup&gt;\r\n\t\t&lt;Using Include = &quot;System.Data.SqlTypes&quot; \/&gt;\r\n\t\t&lt;Using Include = &quot;System.Reflection&quot; \/&gt;\r\n\t&lt;\/ItemGroup&gt;\r\n\r\n&lt;\/Project&gt;\r\n<\/pre>\n<\/div>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2021\/12\/C-10-Global-Using-Directive-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2021\/12\/C-10-Global-Using-Directive-2.png\" alt=\"C# 10 - Global Using Directive\" width=\"354\" height=\"161\" class=\"alignleft size-full wp-image-24156\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2021\/12\/C-10-Global-Using-Directive-2.png 354w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2021\/12\/C-10-Global-Using-Directive-2-300x136.png 300w\" sizes=\"auto, (max-width: 354px) 100vw, 354px\" \/><\/a>Bu tan\u0131mlama yap\u0131ld\u0131\u011f\u0131nda uygulaman\u0131n <em>&#8216;obj&#8217; -> &#8216;Debug&#8217; -> &#8216;net6.0&#8217;<\/em> dizininde <em>&#8216;{project-name}.GlobalUsings.g.cs&#8217;<\/em> isimli bir dosyan\u0131n olu\u015fturuldu\u011funu g\u00f6receksiniz. \u0130lgili dosyaya g\u00f6z atarsan\u0131z e\u011fer tan\u0131mlamas\u0131 yap\u0131lan t\u00fcm namespace&#8217;lerin buraya global olarak eklendi\u011fini g\u00f6receksiniz. Yandaki g\u00f6rselde de oldu\u011fu gibi tan\u0131mlamas\u0131 yap\u0131lmayan namespace&#8217;lerinde geldi\u011fi g\u00f6r\u00fclmektedir. Bunun nedeni <code style=\"color:red;\">&lt;PropertyGroup&gt;...&lt;\/PropertyGroup&gt;<\/code> etiket i\u00e7erisinde tan\u0131mlanm\u0131\u015f olan <code>ImplicitUsings<\/code> \u00f6zelli\u011fidir. Bu \u00f6zellik <code>enable<\/code> oldu\u011fu taktirde bir uygulama i\u00e7in genel ge\u00e7er namespace&#8217;ler buradaki otomatik generate edilen global using s\u0131n\u0131f\u0131 i\u00e7erisine default olarak eklenmektedir. Yok e\u011fer <code>disable<\/code> yap\u0131l\u0131rsa, bizlerin tan\u0131mlad\u0131klar\u0131 d\u0131\u015f\u0131ndakilerin silindi\u011fi g\u00f6r\u00fclecektir. Bunu anlayabilmek i\u00e7in en iyisi a\u015fa\u011f\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc incelemenizdir;<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2021\/12\/C-10-Global-Using-Directive.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2021\/12\/C-10-Global-Using-Directive.gif\" alt=\"C# 10 - Global Using Directive\" width=\"800\" height=\"228\" class=\"aligncenter size-full wp-image-24157\" \/><\/a><br \/>\nG\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere .csproj dosyas\u0131nda <code>Using<\/code> tan\u0131mlamas\u0131 yap\u0131l\u0131r yap\u0131lmaz global using dosyas\u0131 derlenmektedir. Bu i\u015flem tan\u0131mlaman\u0131n kaydedilmesi ile e\u015fzamanl\u0131 ger\u00e7ekle\u015fece\u011finden dolay\u0131 ekstradan bir derleme gibi i\u015fleme gerek duyulmamaktad\u0131r.\n<\/li>\n<li><em><strong>Herhangi Bir .cs Dosyas\u0131ndan Global Using&#8217;lerin Tan\u0131mlanmas\u0131<\/strong><\/em><br \/>\nGlobal using&#8217;leri tan\u0131mlaman\u0131n bir ba\u015fka y\u00f6ntemi ise herhangi bir .cs dosyas\u0131n\u0131n bu i\u015f ama\u00e7l\u0131 kullan\u0131lmas\u0131d\u0131r. Uygulamada olu\u015fturulan ve <u>genellikle<\/u> uygulama ile ayn\u0131 isimde olan bir .cs dosyas\u0131 i\u00e7erisinde a\u015fa\u011f\u0131daki gibi <code style=\"color:blue;\"><strong>global using<\/strong><\/code> tan\u0131mlamalar\u0131n\u0131n yap\u0131lmas\u0131 yeterlidir.<\/p>\n<div style=\"font-size:12px;\">\n&#8211; global-using.cs<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nglobal using System.Reflection;\r\nglobal using System.Runtime.CompilerServices;\r\n<\/pre>\n<\/div>\n<\/li>\n<\/ol>\n<p>Haliyle her iki durumda da global using ile tan\u0131mlanan namespace&#8217;ler alt\u0131ndaki s\u0131n\u0131flara rahat\u00e7a ve herhangi bir kod kirlili\u011fine sebebiyet vermeksizin direkt ula\u015f\u0131labilmektedir.<\/p>\n<p>Nihai olarak;<br \/>\nHer ge\u00e7en g\u00fcn C# programlama dili, g\u00fcc\u00fcne g\u00fc\u00e7 katt\u0131\u011f\u0131 gibi kendini l\u00fczumsuz fazlal\u0131klardan da ar\u0131nd\u0131rmakta ve yar\u0131nlara olabilecek en \u00e7a\u011fda\u015f semantikle hitap edebilmek i\u00e7in bu tarz \u00e7abalar\u0131yla niyetini ortaya koymaktad\u0131r.<\/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, Son zamanlarda .NET 6 ve C# 10 ile gelen yeniliklerde, kodun sadeli\u011fine ve teknik a\u00e7\u0131dan do\u011frudan do\u011fruya i\u015flevsel amac\u0131n\u0131 ger\u00e7ekle\u015ftirmeye odaklan\u0131ld\u0131\u011f\u0131 dikkatinizi \u00e7ekmi\u015ftir! Buna en g\u00fczel \u00f6rnek, Asp.NET Core 6&#8217;da gelen sadele\u015ftirilmi\u015f konfig\u00fcrasyon&#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":24114,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,4484],"tags":[4486,4492,4488,4490,4491],"class_list":["post-24115","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-sharp-c","category-c-10","tag-c-10","tag-c-10-using-directive","tag-c-10-yenilikleri","tag-global-using-directive","tag-using-directive"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/24115","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=24115"}],"version-history":[{"count":42,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/24115\/revisions"}],"predecessor-version":[{"id":24162,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/24115\/revisions\/24162"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/24114"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=24115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=24115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=24115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}