﻿
{"id":17426,"date":"2020-08-18T05:49:45","date_gmt":"2020-08-18T05:49:45","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=17426"},"modified":"2020-08-18T05:49:45","modified_gmt":"2020-08-18T05:49:45","slug":"azure-functions-serisi-14-return-table-storage","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/azure-functions-serisi-14-return-table-storage\/","title":{"rendered":"Azure Functions Serisi #14 &#8211; Return Table Storage"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/azure-functions-yazi-serisi\/\" rel=\"noopener noreferrer\" target=\"_blank\">Azure Functions yaz\u0131 serimizin<\/a> bir \u00f6nceki <a href=\"https:\/\/www.gencayyildiz.com\/blog\/azure-functions-serisi-13-bindings\/\" rel=\"noopener noreferrer\" target=\"_blank\">Bindings<\/a> konusunu ele ald\u0131\u011f\u0131m\u0131z i\u00e7eri\u011finde, i\u015flem hacmimizi geni\u015fletecek bir tasar\u0131m \u00fczerinden seyreti\u011fimiz Table Storage ile ilgili \u00f6rneklendirmede bulunmu\u015ftuk. Bu i\u00e7eri\u011fimizde ise ilgili \u00f6rnekte var olan ve birazdan nazar\u0131n\u0131za sunaca\u011f\u0131m kod ve i\u015f mant\u0131\u011f\u0131 maliyetlerini d\u00fc\u015f\u00fcrerek daha pratik bir kod ve geli\u015ftirme s\u00fcreciyle kar\u015f\u0131la\u015fmam\u0131z\u0131 sa\u011flayacak olan <em>Return Table Storage<\/em> \u00fczerine konu\u015fuyor olaca\u011f\u0131z.<\/p>\n<p><strong style=\"color: #e83e8c;\">Return Table Storage Nedir?<\/strong><br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/azure-functions-serisi-13-bindings\/\" rel=\"noopener noreferrer\" target=\"_blank\">Bindings<\/a> makalesinde Table Output Binding i\u015flemini ger\u00e7ekle\u015ftirirken a\u015fa\u011f\u0131daki geli\u015ftirmede bulunmu\u015ftuk;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n.\r\n.\r\n.\r\n    async public static Task&lt;IActionResult&gt; Post(\r\n        &#x5B;HttpTrigger(AuthorizationLevel.Function, &quot;post&quot;, Route = routeName)] HttpRequest req,\r\n        ILogger log, &#x5B;Table(tableName: &quot;products&quot;, Connection = &quot;StorageConnectionString&quot;)] CloudTable cloudTable)\r\n    {\r\n        string body = await new StreamReader(req.Body).ReadToEndAsync();\r\n        Product product = JsonConvert.DeserializeObject&lt;Product&gt;(body);\r\n        await cloudTable.CreateIfNotExistsAsync();\r\n        TableOperation operation = TableOperation.Insert(product);\r\n        TableResult tableResult = await cloudTable.ExecuteAsync(operation);\r\n \r\n        return new OkObjectResult(tableResult.Result);\r\n    }\r\n.\r\n.\r\n.\r\n<\/pre>\n<p>Burada dikkat ederseniz e\u011fer; bir data&#8217;y\u0131 Table Storage&#8217;a ekleyebilmek i\u00e7in bir &#8216;CloudTable&#8217; tan\u0131mlamakta ve ard\u0131ndan &#8216;TableOperation&#8217; nesnesi ile uzun uzun i\u015flemler ger\u00e7ekle\u015ftirerek nihai olarak &#8216;Execute&#8217; etmekteyiz. Halbuki Function&#8217;\u0131n ekleyece\u011fi datay\u0131 geriye d\u00f6nd\u00fcrerek Table Storage&#8217;a direkt olarak kaydedebilseydi ve ekstradan herhangi bir i\u015flem yapmam\u0131za gerek kalmasayd\u0131 nas\u0131l olurdu? Evet&#8230; Duyar gibiyim \ud83d\ude42 \u0130yi olurdu \ud83d\ude42 \u0130\u015fte Return Table Storage bu tarz basit ve efektif bir s\u00fcreci in\u015fa edebilmek i\u00e7in kullan\u0131lmaktad\u0131r.<\/p>\n<p>Return Table Storage kullan\u0131m\u0131na \u00f6rnek olmas\u0131 i\u00e7in a\u015fa\u011f\u0131daki kodu inceleyiniz;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public static class Function1\r\n    {\r\n        const string routeName = &quot;products&quot;;\r\n        &#x5B;FunctionName(&quot;Post&quot;)]\r\n        &#x5B;return: Table(tableName: &quot;products&quot;, Connection = &quot;StorageConnectionString&quot;)]\r\n        async public static Task&lt;Product&gt; Post(\r\n            &#x5B;HttpTrigger(AuthorizationLevel.Function, &quot;post&quot;, &quot;get&quot;, Route = routeName)] HttpRequest req,\r\n            ILogger log)\r\n        {\r\n            string body = await new StreamReader(req.Body).ReadToEndAsync();\r\n            Product product = JsonConvert.DeserializeObject&lt;Product&gt;(body);\r\n            return product;\r\n        }\r\n    }\r\n<\/pre>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere &#8216;Post&#8217; fonksiyonu ne &#8216;CloudTable&#8217; almakta ne de i\u00e7erisinde herhangi bir ekstradan table storage&#8217;a veri ekleyebilmek i\u00e7in operasyon y\u00fcr\u00fctmektedir. \u0130lgili fonksiyon, <strong><em>5.<\/em><\/strong> sat\u0131rda oldu\u011fu gibi &#8216;return&#8217; target&#8217;\u0131yla &#8216;Table&#8217; attribute&#8217;u ile i\u015faretlenmekte ve b\u00f6ylece bu metottan d\u00f6necek olan product nesnesini hangi table storage&#8217;a ekleyece\u011fini bilmektedir.<\/p>\n<p>Bu i\u015flem neticesinde uygulamay\u0131 derleyip, \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda a\u015fa\u011f\u0131daki gibi sadece product data&#8217;s\u0131n\u0131n post edilmesi hedef table storage&#8217;a verinin eklenmesi i\u00e7in yeterli olacakt\u0131r.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Functions-Serisi-14-Return-Table-Storage.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Functions-Serisi-14-Return-Table-Storage.jpg\" alt=\"Azure Functions Serisi #14 - Return Table Storage\" width=\"356\" height=\"270\" class=\"aligncenter size-full wp-image-17437\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Functions-Serisi-14-Return-Table-Storage.jpg 356w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Functions-Serisi-14-Return-Table-Storage-300x228.jpg 300w\" sizes=\"auto, (max-width: 356px) 100vw, 356px\" \/><\/a><br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Functions-Serisi-14-Return-Table-Storage-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Functions-Serisi-14-Return-Table-Storage-1.jpg\" alt=\"Azure Functions Serisi #14 - Return Table Storage\" width=\"624\" height=\"177\" class=\"aligncenter size-full wp-image-17438\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Functions-Serisi-14-Return-Table-Storage-1.jpg 624w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Functions-Serisi-14-Return-Table-Storage-1-300x85.jpg 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/a><\/p>\n<p>B\u00f6ylece kodumuzu fazla kirletmeden d\u00f6nen de\u011ferin direkt olarak table storage&#8217;a eklenmesini sa\u011flamakta ve efektif bir in\u015fa ile rahat ve daha sade bir geli\u015fimsel s\u00fcre\u00e7te bulunulmu\u015f olmaktad\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, Azure Functions yaz\u0131 serimizin bir \u00f6nceki Bindings konusunu ele ald\u0131\u011f\u0131m\u0131z i\u00e7eri\u011finde, i\u015flem hacmimizi geni\u015fletecek bir tasar\u0131m \u00fczerinden seyreti\u011fimiz Table Storage ile ilgili \u00f6rneklendirmede bulunmu\u015ftuk. Bu i\u00e7eri\u011fimizde ise ilgili \u00f6rnekte var olan ve birazdan&#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":17011,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3121],"tags":[3661,3743,3641,3742,3744],"class_list":["post-17426","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure","tag-azure-functions","tag-azure-functions-return-table-storage","tag-azure-table-storage","tag-return-table-storage","tag-table-storage"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/17426","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=17426"}],"version-history":[{"count":12,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/17426\/revisions"}],"predecessor-version":[{"id":17440,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/17426\/revisions\/17440"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/17011"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=17426"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=17426"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=17426"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}