﻿
{"id":9210,"date":"2018-08-29T12:51:06","date_gmt":"2018-08-29T12:51:06","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=9210"},"modified":"2018-08-29T12:51:06","modified_gmt":"2018-08-29T12:51:06","slug":"express-js-middleware-ile-hata-yonetimi","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/express-js-middleware-ile-hata-yonetimi\/","title":{"rendered":"Express.js &#8211; Middleware \u0130le Hata Y\u00f6netimi"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Node.js framework mimarisinde Express.js mod\u00fcl\u00fc sayesinde olu\u015fturdu\u011fumuz ara katmanlar(MiddleWare) ile projemizde yap\u0131lan requestlere kar\u015f\u0131l\u0131k verilen responslar\u0131n aras\u0131na girilmekte ve taleplere d\u00f6n\u00fclecek cevaplarda \u00f6ncelikli modifikasyonlar sa\u011flanabilmektedir. Bizler bu konuyu \u00f6nceki makalelerimizden <a href=\"http:\/\/www.gencayyildiz.com\/blog\/express-js-middlewareara-katman-nedir-nasil-kullanilir\/\" rel=\"noopener\" target=\"_blank\">Express.js \u2013 Middleware(Ara Katman) Nedir? Nas\u0131l Kullan\u0131l\u0131r?<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131mda detayl\u0131ca irdelemi\u015f, teknik boyutta tam teferruatl\u0131ca ele alm\u0131\u015f bulunmaktay\u0131z. Bu i\u00e7eri\u011fimizde Middleware yap\u0131lar\u0131n\u0131 kullanarak projemizde genel hata kontrol\u00fcn\u00fcn nas\u0131l sa\u011fland\u0131\u011f\u0131n\u0131 konu\u015facak ve yap\u0131sal olarak konuyu detayl\u0131ca de\u011ferlendirece\u011fiz.<\/p>\n<p>Tabi konunun a\u00e7\u0131l\u0131m\u0131 a\u00e7\u0131s\u0131ndan ilk olarak Middleware \u00f6rneklendirmesiyle bir girizgah yapmam\u0131z gerekmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst app = require(&quot;express&quot;)();\r\n\r\napp.use((request, response, next) =&gt; {\r\n    console.log(&quot;MiddleWare 1...&quot;);\r\n    next();\r\n});\r\napp.use((request, response, next) =&gt; {\r\n    console.log(&quot;MiddleWare 2...&quot;);\r\n    next();\r\n});\r\napp.use((request, response, next) =&gt; {\r\n    console.log(&quot;MiddleWare 3...&quot;);\r\n    next();\r\n});\r\napp.get(&quot;\/&quot;, (request, response, next) =&gt; {\r\n    response.send(&quot;Merhaba&quot;);\r\n});\r\n\r\napp.listen(5000, () =&gt; console.log(&quot;Yay\u0131n ba\u015flad\u0131...&quot;));\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz e\u011fer \u00fc\u00e7 adet Middleware tan\u0131mlanm\u0131\u015f bulunmaktad\u0131r. Burada ilk olarak bilinmesi gereken husus \u015fudur ki; Middleware yap\u0131lar\u0131 tan\u0131mlanma s\u0131ras\u0131na g\u00f6re tetiklenmektedirler.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Express.js-Middleware-\u0130le-Hata-Y\u00f6netimi.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Express.js-Middleware-\u0130le-Hata-Y\u00f6netimi.png\" alt=\"Express.js - Middleware \u0130le Hata Y\u00f6netimi\" width=\"241\" height=\"95\" class=\"aligncenter size-full wp-image-9216\" \/><\/a><br \/>\n&#8220;<strong>Eeee hoca! ne alaka \u015fimdi hata y\u00f6netimiyle?<\/strong>&#8221; sordu\u011funuzu duyar gibiyim. Burada konumuzla alakadar olan husus asl\u0131nda dikkatinizi \u00e7ekmek istedi\u011fim \u015fu kurald\u0131r; <em><u>hata y\u00f6netiminin sa\u011flanaca\u011f\u0131 Middleware yap\u0131s\u0131n\u0131n kesinlikle ve kesinlikle en sonuncu olarak tan\u0131mlanmas\u0131 gerekmektedir.<\/u><\/em><\/p>\n<p>&#8220;<strong>Tamam, anlad\u0131k. Hata y\u00f6netimini sa\u011flayaca\u011f\u0131m\u0131z Middleware di\u011fer Middleware&#8217;lere nazaran sonuncu olarak tasarlanacakt\u0131r. Peki nas\u0131l tasarlayaca\u011f\u0131z?<\/strong>&#8221; sorunuza istinaden parametre fark\u0131ndan yola \u00e7\u0131k\u0131p normal bir ara katmanla hata y\u00f6netimini sa\u011flayan aras\u0131nda fark\u0131 yaratabiliriz.<\/p>\n<p>Makalenin giri\u015finde refere edilmi\u015f yaz\u0131mda dahil \u015fu ana kadar t\u00fcm makalelerimizde Middleware yap\u0131s\u0131n\u0131 yukar\u0131daki \u00f6rnekte de oldu\u011fu gibi &#8220;request&#8221;, &#8220;response&#8221; ve &#8220;next&#8221; olmak \u00fczere \u00fc\u00e7 parametreli bir \u015fekilde tan\u0131mlam\u0131\u015f bulunmaktay\u0131z. E\u011fer ki, parametre say\u0131s\u0131 a\u015fa\u011f\u0131daki gibi d\u00f6rt olursa i\u015fte bu bir hata yakalama \u00f6zelli\u011fi g\u00f6steren Middileware yap\u0131s\u0131 olacakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\napp.use((error, request, response, next) =&gt; {\r\n    response.send(error.message);\r\n});\r\n<\/pre>\n<p>Evet, g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere bu ara katman projede olacak t\u00fcm hatalar\u0131 yakalayacak ve \u00fczerinde genel bir hata kontrol\u00fc yapmam\u0131z\u0131 sa\u011flayacak \u015fekilde nitelendirilmi\u015ftir.<\/p>\n<p>Gelin \u015fimdi yapay bir hata f\u0131rlatal\u0131m ve ilgili Middleware&#8217;i kullanarak bu hata kontrol\u00fcn\u00fc sa\u011flayal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst app = require(&quot;express&quot;)();\r\n\r\napp.use((request, response, next) =&gt; {\r\n    console.log(&quot;MiddleWare 1...&quot;);\r\n    next();\r\n});\r\napp.use((request, response, next) =&gt; {\r\n    console.log(&quot;MiddleWare 2...&quot;);\r\n    next();\r\n});\r\napp.use((request, response, next) =&gt; {\r\n    console.log(&quot;MiddleWare 3...&quot;);\r\n    next();\r\n});\r\napp.use((error, request, response, next) =&gt; {\r\n    response.send(error.message);\r\n});\r\napp.get(&quot;\/&quot;, (request, response, next) =&gt; {\r\n    throw new Error(&quot;Hata var.&quot;);\r\n});\r\n\r\napp.listen(5000, () =&gt; console.log(&quot;Yay\u0131n ba\u015flad\u0131...&quot;));\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu derleyip \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda \u00e7\u0131kt\u0131 olarak ekranda a\u015fa\u011f\u0131daki gibi bir sonu\u00e7la kar\u015f\u0131la\u015fmaktay\u0131z.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Express.js-Middleware-\u0130le-Hata-Y\u00f6netimi-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Express.js-Middleware-\u0130le-Hata-Y\u00f6netimi-1.png\" alt=\"Express.js - Middleware \u0130le Hata Y\u00f6netimi\" width=\"1023\" height=\"234\" class=\"aligncenter size-full wp-image-9226\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Express.js-Middleware-\u0130le-Hata-Y\u00f6netimi-1.png 1023w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Express.js-Middleware-\u0130le-Hata-Y\u00f6netimi-1-300x69.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Express.js-Middleware-\u0130le-Hata-Y\u00f6netimi-1-768x176.png 768w\" sizes=\"auto, (max-width: 1023px) 100vw, 1023px\" \/><\/a><br \/>\n&#8220;<strong>La hoca! Bu \u00e7okta kontrol edilmi\u015f bir hataya benzemiyor!<\/strong>&#8221; dedi\u011finizide duyar gibiyim \ud83d\ude42 Hata ara katman\u0131n\u0131 Middleware olarak tan\u0131mlanan di\u011fer yap\u0131lar\u0131n sonuna tan\u0131mlam\u0131\u015f olabiliriz ama dikkat ederseniz http iste\u011fini g\u00f6z ard\u0131 etmi\u015f bulunmaktay\u0131z ve \u00f6rne\u011fimizde &#8220;get&#8221; fonksiyonu hata katman\u0131ndan sonra tan\u0131mlanm\u0131\u015f bulunmaktad\u0131r. Dolay\u0131s\u0131yla http istekleride \u00f6z\u00fcnde birer ara katman gibi &#8220;use&#8221; fonksiyonu ile tan\u0131mlanabilen yap\u0131lar olmas\u0131ndan \u00f6t\u00fcr\u00fc hata katmanlar\u0131n\u0131n bu yap\u0131lardan da sonra gelmeleri gerekmektedir.<\/p>\n<p>Onca anlat\u0131m\u0131n \u00fczerine bu olas\u0131 hatan\u0131n tezah\u00fcr etme ihtimaline nazaran sizi bu ihtimal do\u011frultusunda ba\u015fta uyarmak istedim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst app = require(&quot;express&quot;)();\r\n\r\napp.use((request, response, next) =&gt; {\r\n    console.log(&quot;MiddleWare 1...&quot;);\r\n    next();\r\n});\r\napp.use((request, response, next) =&gt; {\r\n    console.log(&quot;MiddleWare 2...&quot;);\r\n    next();\r\n});\r\napp.use((request, response, next) =&gt; {\r\n    console.log(&quot;MiddleWare 3...&quot;);\r\n    next();\r\n});\r\napp.get(&quot;\/&quot;, (request, response, next) =&gt; {\r\n    throw new Error(&quot;Hata var.&quot;);\r\n});\r\napp.use((error, request, response, next) =&gt; {\r\n    response.send(error.message);\r\n});\r\n\r\napp.listen(5000, () =&gt; console.log(&quot;Yay\u0131n ba\u015flad\u0131...&quot;));\r\n<\/pre>\n<p>E\u011fer ki kodumuzu yukar\u0131daki gibi d\u00fczeltip, derleyip, \u00e7al\u0131\u015ft\u0131r\u0131rsak a\u015fa\u011f\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcnde oldu\u011fu gibi f\u0131rlat\u0131lan hata neticesinde hata kontrol ara katman\u0131m\u0131z devreye girecek ve hatay\u0131 istedi\u011fimiz gibi y\u00f6nlendirecektir.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Express.js-Middleware-\u0130le-Hata-Y\u00f6netimi-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Express.js-Middleware-\u0130le-Hata-Y\u00f6netimi-2.png\" alt=\"Express.js - Middleware \u0130le Hata Y\u00f6netimi\" width=\"373\" height=\"71\" class=\"aligncenter size-full wp-image-9230\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Express.js-Middleware-\u0130le-Hata-Y\u00f6netimi-2.png 373w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Express.js-Middleware-\u0130le-Hata-Y\u00f6netimi-2-300x57.png 300w\" sizes=\"auto, (max-width: 373px) 100vw, 373px\" \/><\/a><\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<\/p>\n<p>\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, Node.js framework mimarisinde Express.js mod\u00fcl\u00fc sayesinde olu\u015fturdu\u011fumuz ara katmanlar(MiddleWare) ile projemizde yap\u0131lan requestlere kar\u015f\u0131l\u0131k verilen responslar\u0131n aras\u0131na girilmekte ve taleplere d\u00f6n\u00fclecek cevaplarda \u00f6ncelikli modifikasyonlar sa\u011flanabilmektedir. Bizler bu konuyu \u00f6nceki makalelerimizden Express.js \u2013 Middleware(Ara&#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":8686,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2495,2145],"tags":[2497,2594,2595,2147],"class_list":["post-9210","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-express-js","category-node-js","tag-express-js","tag-express-js-middleware-ile-hata-yonetimi","tag-middleware-ile-hata-yonetimi","tag-node-js"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/9210","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=9210"}],"version-history":[{"count":20,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/9210\/revisions"}],"predecessor-version":[{"id":9233,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/9210\/revisions\/9233"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/8686"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=9210"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=9210"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=9210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}