﻿
{"id":16024,"date":"2020-05-22T22:37:27","date_gmt":"2020-05-22T22:37:27","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=16024"},"modified":"2020-05-22T22:37:27","modified_gmt":"2020-05-22T22:37:27","slug":"odata-custom-route-yapilanmasi","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/odata-custom-route-yapilanmasi\/","title":{"rendered":"OData Custom Route Yap\u0131lanmas\u0131"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bir \u00f6nceki <a href=\"https:\/\/www.gencayyildiz.com\/blog\/odata-davranis-modellemesi-ve-attributelari\/\" target=\"_blank\" rel=\"noopener noreferrer\">OData Davran\u0131\u015f Modellemesi ve Attributelar\u0131<\/a> ba\u015fl\u0131kl\u0131 makalemizde OData protokol\u00fcn\u00fcn nas\u0131l bir davran\u0131\u015f sergiledi\u011fini, action yap\u0131lanmas\u0131n\u0131n nas\u0131l tasar\u0131m gerektirdi\u011fini ve istek do\u011frultusunda \u00f6zelle\u015ftirmenin nas\u0131l yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131n\u0131 incelemi\u015f bulunmaktay\u0131z. Bu i\u00e7eri\u011fimizde ise OData protokol\u00fc i\u00e7in custom route yap\u0131lanmas\u0131n\u0131n nas\u0131l in\u015fa edilece\u011fini inceleyece\u011fiz.<\/p>\n<p>\u0130lk olarak OData&#8217;n\u0131n varsay\u0131lan route yap\u0131lanmas\u0131n\u0131n nas\u0131l oldu\u011funu ele alarak ba\u015flayal\u0131m.<\/p>\n<p><strong>Default Route<\/strong><br \/>\nOData protokol\u00fcn\u00fcn varsay\u0131lan route yap\u0131lanmas\u0131 a\u015fa\u011f\u0131daki gibidir;<br \/>\n<code style=\"color:red;\"><strong>https:\/\/localhost:5001\/odata\/<span style=\"color:blue;\">personel(1)?$expand=satislar($count=true)<\/span><\/strong><\/code><\/p>\n<p>Bizler OData protokol\u00fcn\u00fcn sunmu\u015f oldu\u011fu imkanlar dahilindeki kurallar \u00e7er\u00e7evesinde custom routelar olu\u015fturabiliriz. (<span style=\"font-size:11px;\">OData protokol\u00fcn\u00fcn Routing Conventions&#8217;lar\u0131na g\u00f6z atmak i\u00e7in <a href=\"https:\/\/docs.microsoft.com\/en-us\/odata\/webapi\/built-in-routing-conventions\" rel=\"noopener noreferrer\" target=\"_blank\">t\u0131klay\u0131n\u0131z<\/a>.<\/span>)<\/p>\n<p>\u00d6rne\u011fin;<br \/>\n<code style=\"color:red;\"><strong>https:\/\/localhost:5001\/odata\/<span style=\"color:blue;\">personel(1)\/satislar(10258)<\/span><\/strong><\/code><br \/>\nyukar\u0131daki gibi url \u00fczerinden hedef personelin hedef sat\u0131\u015f\u0131n\u0131 bizlere verecek bir route olu\u015fturabilmek i\u00e7in a\u015fa\u011f\u0131daki gibi bir action geli\u015ftirilmesi gerekmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class PersonelController : ODataController\r\n    {\r\n        NorthwindContext _northwindContext;\r\n        public PersonelController(NorthwindContext northwindContext)\r\n        {\r\n            _northwindContext = northwindContext;\r\n        }\r\n        .\r\n        .\r\n        .\r\n        &#x5B;ODataRoute(&quot;personel({personelid})\/satislar({satisid})&quot;)]\r\n        public IActionResult GetSatisById(&#x5B;FromODataUri]int personelid, &#x5B;FromODataUri]int satisid)\r\n        {\r\n            return Ok(_northwindContext.Satislar.Where(p =&gt; p.PersonelId == personelid &amp;&amp; p.SatisId == satisid));\r\n        }\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz e\u011fer &#8216;GetSatisById&#8217; isimli metodun ad\u0131n\u0131n &#8216;Get&#8230;&#8217; ile ba\u015flad\u0131\u011f\u0131na dikkatinizi \u00e7ekerim. Ayr\u0131ca bu \u015fekilde bir yap\u0131lanman\u0131n in\u015fa edilebilmesi i\u00e7in kesinlikle iki nesne\/entity aras\u0131nda fiziksel(foreign) ili\u015fki olmas\u0131 gerekti\u011fini bildiririm.<\/p>\n<p>Bu \u015fekilde url rotalar\u0131n\u0131 \u00f6zelle\u015ftirebilir ve ihtiyac\u0131n\u0131z do\u011frultusunda daha sorgulanabilir ve pratik url \u015fablonlar\u0131 olu\u015fturabilirsiniz.<\/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, Bir \u00f6nceki OData Davran\u0131\u015f Modellemesi ve Attributelar\u0131 ba\u015fl\u0131kl\u0131 makalemizde OData protokol\u00fcn\u00fcn nas\u0131l bir davran\u0131\u015f sergiledi\u011fini, action yap\u0131lanmas\u0131n\u0131n nas\u0131l tasar\u0131m gerektirdi\u011fini ve istek do\u011frultusunda \u00f6zelle\u015ftirmenin nas\u0131l yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131n\u0131 incelemi\u015f bulunmaktay\u0131z. Bu i\u00e7eri\u011fimizde ise OData protokol\u00fc&#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":15889,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3516],"tags":[3514,3531],"class_list":["post-16024","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-odata","tag-odata","tag-odata-custom-route"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/16024","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=16024"}],"version-history":[{"count":8,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/16024\/revisions"}],"predecessor-version":[{"id":16032,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/16024\/revisions\/16032"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/15889"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=16024"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=16024"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=16024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}