{"id":39221,"date":"2026-02-16T21:00:47","date_gmt":"2026-02-16T18:00:47","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/"},"modified":"2026-02-16T21:00:47","modified_gmt":"2026-02-16T18:00:47","slug":"node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/","title":{"rendered":"Node.js ile WhatsApp \u00dczerinden OTP Kodlar\u0131 Nas\u0131l G\u00f6nderilir?"},"content":{"rendered":"<h2>Node.js ile WhatsApp \u00dczerinden OTP Kodlar\u0131 Nas\u0131l G\u00f6nderilir?<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda kullan\u0131c\u0131 hesaplar\u0131n\u0131n g\u00fcvenli\u011fi her zamankinden daha kritik bir hale gelmi\u015ftir. Tek Kullan\u0131ml\u0131k \u015eifreler (OTP &#8211; One-Time Password), bu g\u00fcvenli\u011fi sa\u011flaman\u0131n en yayg\u0131n ve etkili yollar\u0131ndan biridir. Kullan\u0131c\u0131lar\u0131n kimliklerini do\u011frulamak, i\u015flem onaylar\u0131n\u0131 almak veya hesaplar\u0131na eri\u015fim sa\u011flamak i\u00e7in kullan\u0131lan OTP&#8217;ler, genellikle SMS veya e-posta yoluyla iletilir. Ancak WhatsApp&#8217;\u0131n d\u00fcnya genelindeki muazzam kullan\u0131c\u0131 taban\u0131 ve anl\u0131k mesajla\u015fma yetenekleri, OTP da\u011f\u0131t\u0131m\u0131 i\u00e7in cazip bir alternatif sunmaktad\u0131r. Bu makale, Node.js kullanarak WhatsApp \u00fczerinden OTP kodlar\u0131 g\u00f6nderme s\u00fcrecini ad\u0131m ad\u0131m ele alacak, gerekli ara\u00e7lar\u0131, entegrasyon y\u00f6ntemlerini ve g\u00fcvenlik ipu\u00e7lar\u0131n\u0131 detayl\u0131 bir \u015fekilde a\u00e7\u0131klayacakt\u0131r.<\/p>\n<h2>OTP ve WhatsApp Entegrasyonunun \u00d6nemi<\/h2>\n<p>Kullan\u0131c\u0131 g\u00fcvenli\u011fini art\u0131rmak ve dijital etkile\u015fimleri do\u011frulamak, modern uygulamalar\u0131n temel gereksinimlerinden biridir. OTP&#8217;ler, bu do\u011frulamay\u0131 sa\u011flaman\u0131n en pratik yollar\u0131ndan biridir. WhatsApp ise, milyarlarca kullan\u0131c\u0131s\u0131yla d\u00fcnya genelinde en pop\u00fcler mesajla\u015fma platformudur. OTP&#8217;leri WhatsApp \u00fczerinden g\u00f6ndermek, hem kullan\u0131c\u0131 deneyimini iyile\u015ftirir hem de mesajlar\u0131n daha h\u0131zl\u0131 ve g\u00fcvenilir bir \u015fekilde iletilmesini sa\u011flar.<\/p>\n<h3>OTP Nedir ve Neden Gereklidir?<\/h3>\n<p>OTP, belirli bir i\u015flem veya oturum i\u00e7in sadece bir kez kullan\u0131labilen, genellikle 4 ila 8 haneli rastgele olu\u015fturulmu\u015f bir say\u0131 dizisidir. Kullan\u0131c\u0131 ad\u0131 ve \u015fifre ile yap\u0131lan geleneksel do\u011frulamaya ek bir g\u00fcvenlik katman\u0131 ekleyerek, kimlik av\u0131 (phishing) ve parola \u00e7alma gibi sald\u0131r\u0131lara kar\u015f\u0131 koruma sa\u011flar. \u00d6zellikle bankac\u0131l\u0131k i\u015flemleri, e-ticaret \u00f6demeleri, hesap kurtarma veya yeni cihazdan giri\u015f gibi hassas durumlarda OTP kullan\u0131m\u0131 vazge\u00e7ilmezdir.<\/p>\n<h3>WhatsApp&#8217;\u0131n Kullan\u0131m Yayg\u0131nl\u0131\u011f\u0131 ve Avantajlar\u0131<\/h3>\n<p>WhatsApp&#8217;\u0131n d\u00fcnya genelindeki yayg\u0131nl\u0131\u011f\u0131, onu kullan\u0131c\u0131larla do\u011frudan ileti\u015fim kurmak i\u00e7in ideal bir platform haline getirir. Kullan\u0131c\u0131lar\u0131n \u00e7o\u011fu zaten WhatsApp&#8217;\u0131 aktif olarak kulland\u0131\u011f\u0131 i\u00e7in, OTP&#8217;lerin bu kanal \u00fczerinden g\u00f6nderilmesi, ek bir uygulama indirme veya farkl\u0131 bir platforma ge\u00e7i\u015f yapma ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r. Bu durum, kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde iyile\u015ftirir. Ayr\u0131ca, WhatsApp mesajlar\u0131 genellikle SMS&#8217;ten daha g\u00fcvenli kabul edilir ve zengin medya \u00f6zellikleri sayesinde daha bilgilendirici mesajlar g\u00f6nderilebilir.<\/p>\n<h3>Geleneksel Y\u00f6ntemlere G\u00f6re Farklar<\/h3>\n<p>SMS tabanl\u0131 OTP g\u00f6nderiminde bazen gecikmeler ya\u015fanabilir veya mesajlar spam olarak i\u015faretlenebilir. E-posta tabanl\u0131 OTP&#8217;ler ise kullan\u0131c\u0131n\u0131n e-posta kutusunu kontrol etmesini gerektirir ve anl\u0131k do\u011frulama i\u00e7in ideal de\u011fildir. WhatsApp ise, anl\u0131k bildirimleri ve y\u00fcksek teslimat oranlar\u0131 sayesinde bu sorunlar\u0131n \u00e7o\u011funu a\u015far. Kullan\u0131c\u0131lar, OTP&#8217;yi do\u011frudan bildirim olarak alabilir ve uygulamay\u0131 terk etmeden do\u011frulama i\u015flemini tamamlayabilirler. Ancak, WhatsApp Business API&#8217;nin maliyetleri ve onay s\u00fcre\u00e7leri SMS&#8217;e g\u00f6re daha karma\u015f\u0131k olabilir.<\/p>\n<h2>Gerekli Ara\u00e7lar ve \u00d6n Ko\u015fullar<\/h2>\n<p>WhatsApp \u00fczerinden OTP g\u00f6nderme projenize ba\u015flamadan \u00f6nce belirli ara\u00e7lara ve \u00f6n ko\u015fullara sahip olman\u0131z gerekmektedir. Bu ad\u0131mlar, projenizin temelini olu\u015fturacak ve sorunsuz bir geli\u015ftirme s\u00fcreci sa\u011flayacakt\u0131r.<\/p>\n<h3>Node.js ve npm Kurulumu<\/h3>\n<p>Node.js, sunucu taraf\u0131 JavaScript uygulamalar\u0131 geli\u015ftirmek i\u00e7in kullan\u0131lan bir \u00e7al\u0131\u015fma zaman\u0131 ortam\u0131d\u0131r. npm (Node Package Manager) ise Node.js paketlerini y\u00f6netmek i\u00e7in kullan\u0131lan varsay\u0131lan paket y\u00f6neticisidir. Projenizi geli\u015ftirmek i\u00e7in bu ikisinin sisteminizde kurulu olmas\u0131 \u015fartt\u0131r. Node.js&#8217;i <a href=\"https:\/\/nodejs.org\/\" target=\"_blank\">resmi web sitesinden<\/a> indirebilirsiniz. Kurulumla birlikte npm de otomatik olarak y\u00fcklenecektir.<\/p>\n<h3>WhatsApp Business API veya \u00dc\u00e7\u00fcnc\u00fc Parti \u00c7\u00f6z\u00fcmler<\/h3>\n<p>WhatsApp, do\u011frudan son kullan\u0131c\u0131lar i\u00e7in bir API sa\u011flamaz. \u0130\u015fletmelerin WhatsApp \u00fczerinden ileti\u015fim kurabilmesi i\u00e7in WhatsApp Business API veya bu API&#8217;yi kullanan \u00fc\u00e7\u00fcnc\u00fc parti sa\u011flay\u0131c\u0131lar (Twilio, MessageBird, Vonage vb.) arac\u0131l\u0131\u011f\u0131yla eri\u015fim sa\u011flamas\u0131 gerekir. Bu makalede, genellikle \u00fc\u00e7\u00fcnc\u00fc parti sa\u011flay\u0131c\u0131lar \u00fczerinden ilerleyece\u011fiz \u00e7\u00fcnk\u00fc WhatsApp Business API&#8217;nin do\u011frudan entegrasyonu daha karma\u015f\u0131k ve onay s\u00fcre\u00e7leri gerektirebilir.<\/p>\n<h3>Hesap Olu\u015fturma ve API Anahtarlar\u0131<\/h3>\n<p>Se\u00e7ti\u011finiz \u00fc\u00e7\u00fcnc\u00fc parti sa\u011flay\u0131c\u0131da (\u00f6rne\u011fin Twilio) bir hesap olu\u015fturman\u0131z gerekecektir. Hesap olu\u015fturma s\u00fcrecinde, uygulaman\u0131z\u0131n WhatsApp mesajlar\u0131 g\u00f6ndermesine izin verecek API anahtarlar\u0131 (Account SID, Auth Token) ve bir WhatsApp \u00f6zellikli telefon numaras\u0131 alacaks\u0131n\u0131z. Bu bilgiler, Node.js uygulaman\u0131z\u0131n sa\u011flay\u0131c\u0131n\u0131n API&#8217;si ile kimlik do\u011frulamas\u0131 yapmas\u0131 i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h3>Gerekli K\u00fct\u00fcphaneler ve Ba\u011f\u0131ml\u0131l\u0131klar<\/h3>\n<p>Node.js projenizde WhatsApp mesajlar\u0131 g\u00f6ndermek i\u00e7in sa\u011flay\u0131c\u0131n\u0131n resmi Node.js k\u00fct\u00fcphanesini kullanman\u0131z gerekecektir. \u00d6rne\u011fin, Twilio kullan\u0131yorsan\u0131z <code>twilio<\/code> npm paketini kurman\u0131z gerekir. Ayr\u0131ca, ortam de\u011fi\u015fkenlerini y\u00f6netmek i\u00e7in <code>dotenv<\/code> ve basit bir web sunucusu olu\u015fturmak i\u00e7in <code>express<\/code> gibi k\u00fct\u00fcphaneler de faydal\u0131 olacakt\u0131r.<\/p>\n<h2>WhatsApp Business API veya \u00dc\u00e7\u00fcnc\u00fc Parti Sa\u011flay\u0131c\u0131 Se\u00e7imi<\/h2>\n<p>OTP g\u00f6nderimi i\u00e7in do\u011fru platformu se\u00e7mek, projenizin ba\u015far\u0131s\u0131 i\u00e7in kritik bir ad\u0131md\u0131r. \u0130ki ana se\u00e7enek bulunmaktad\u0131r: WhatsApp Business API&#8217;yi do\u011frudan kullanmak veya Twilio gibi \u00fc\u00e7\u00fcnc\u00fc parti bir sa\u011flay\u0131c\u0131dan yararlanmak.<\/p>\n<h3>WhatsApp Business API&#8217;nin Avantajlar\u0131 ve Dezavantajlar\u0131<\/h3>\n<p><strong>Avantajlar\u0131:<\/strong> Tam kontrol, y\u00fcksek hacimli mesajla\u015fma i\u00e7in optimize edilmi\u015f altyap\u0131, geni\u015f \u00f6zelle\u015ftirme se\u00e7enekleri. Kendi sunucunuzda bar\u0131nd\u0131rabilir veya bulut tabanl\u0131 bir \u00e7\u00f6z\u00fcm kullanabilirsiniz.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong> Kurulum ve yap\u0131land\u0131rma s\u00fcreci olduk\u00e7a karma\u015f\u0131kt\u0131r. Meta&#8217;n\u0131n (eski ad\u0131yla Facebook) kat\u0131 onay s\u00fcre\u00e7lerinden ge\u00e7mek ve belirli y\u00f6nergeleri takip etmek gerekir. Genellikle b\u00fcy\u00fck i\u015fletmeler ve y\u00fcksek mesaj hacimleri i\u00e7in daha uygundur.<\/p>\n<h3>Twilio, MessageBird gibi Sa\u011flay\u0131c\u0131lar<\/h3>\n<p>Twilio, MessageBird, Vonage gibi \u00fc\u00e7\u00fcnc\u00fc parti sa\u011flay\u0131c\u0131lar, WhatsApp Business API&#8217;nin karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 soyutlayarak geli\u015ftiricilere daha basit bir aray\u00fcz sunar. Bu sa\u011flay\u0131c\u0131lar, API eri\u015fimini, mesaj \u015fablonu y\u00f6netimini ve faturaland\u0131rmay\u0131 sizin i\u00e7in \u00fcstlenir.<\/p>\n<p><strong>Avantajlar\u0131:<\/strong> Kolay entegrasyon, h\u0131zl\u0131 ba\u015flang\u0131\u00e7, geni\u015f dok\u00fcmantasyon ve destek, esnek fiyatland\u0131rma modelleri (genellikle mesaj ba\u015f\u0131na \u00f6deme). Test ortamlar\u0131 ve sandbox numaralar\u0131 sunarak geli\u015ftirme s\u00fcrecini kolayla\u015ft\u0131r\u0131rlar.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong> Mesaj ba\u015f\u0131na maliyetler, sa\u011flay\u0131c\u0131n\u0131n API limitlerine ve politikalar\u0131na ba\u011fl\u0131l\u0131k. Tam kontrol yerine sa\u011flay\u0131c\u0131n\u0131n sundu\u011fu \u00f6zelliklerle s\u0131n\u0131rl\u0131 kal\u0131rs\u0131n\u0131z.<\/p>\n<h3>Sa\u011flay\u0131c\u0131 Se\u00e7iminde Dikkat Edilmesi Gerekenler<\/h3>\n<p>Sa\u011flay\u0131c\u0131 se\u00e7imi yaparken a\u015fa\u011f\u0131daki fakt\u00f6rleri g\u00f6z \u00f6n\u00fcnde bulundurman\u0131z \u00f6nemlidir:<\/p>\n<ul>\n<li><strong>Maliyet:<\/strong> Mesaj ba\u015f\u0131na \u00fccretler, ayl\u0131k abonelikler veya hacme dayal\u0131 indirimler.<\/li>\n<li><strong>Kolayl\u0131k:<\/strong> Entegrasyonun ne kadar kolay oldu\u011fu, dok\u00fcmantasyonun kalitesi.<\/li>\n<li><strong>G\u00fcvenilirlik ve \u00d6l\u00e7eklenebilirlik:<\/strong> Mesaj teslimat oranlar\u0131, uptime garantileri, y\u00fcksek hacimli trafi\u011fi y\u00f6netme yetene\u011fi.<\/li>\n<li><strong>Destek:<\/strong> Kar\u015f\u0131la\u015fabilece\u011finiz sorunlar i\u00e7in sa\u011flanan teknik destek.<\/li>\n<li><strong>G\u00fcvenlik:<\/strong> Veri \u015fifreleme, gizlilik politikalar\u0131 ve uyumluluk (GDPR, KVKK vb.).<\/li>\n<\/ul>\n<table border=\"1\">\n<thead>\n<tr>\n<th>\u00d6zellik<\/th>\n<th>WhatsApp Business API (Do\u011frudan)<\/th>\n<th>\u00dc\u00e7\u00fcnc\u00fc Parti Sa\u011flay\u0131c\u0131 (\u00f6rn. Twilio)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Kurulum Karma\u015f\u0131kl\u0131\u011f\u0131<\/td>\n<td>Y\u00fcksek (altyap\u0131, onay s\u00fcre\u00e7leri)<\/td>\n<td>D\u00fc\u015f\u00fck (API entegrasyonu)<\/td>\n<\/tr>\n<tr>\n<td>Maliyet<\/td>\n<td>De\u011fi\u015fken, genellikle y\u00fcksek hacimler i\u00e7in uygun, altyap\u0131 maliyetleri<\/td>\n<td>Mesaj ba\u015f\u0131na \u00fccret, esnek, ba\u015flang\u0131\u00e7 i\u00e7in uygun<\/td>\n<\/tr>\n<tr>\n<td>\u00d6zelle\u015ftirme<\/td>\n<td>Tam kontrol ve esneklik<\/td>\n<td>Sa\u011flay\u0131c\u0131n\u0131n sundu\u011fu \u00f6zelliklerle s\u0131n\u0131rl\u0131<\/td>\n<\/tr>\n<tr>\n<td>Destek<\/td>\n<td>Meta veya i\u015f orta\u011f\u0131<\/td>\n<td>Sa\u011flay\u0131c\u0131<\/td>\n<\/tr>\n<tr>\n<td>Ba\u015flang\u0131\u00e7 H\u0131z\u0131<\/td>\n<td>Yava\u015f (onay s\u00fcre\u00e7leri nedeniyle)<\/td>\n<td>H\u0131zl\u0131 (sandbox ve test imkanlar\u0131)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Node.js ile Temel Kurulum ve Proje Yap\u0131s\u0131<\/h2>\n<p>Bu b\u00f6l\u00fcmde, Node.js projenizi nas\u0131l ba\u015flataca\u011f\u0131n\u0131z\u0131, ortam de\u011fi\u015fkenlerini nas\u0131l y\u00f6netece\u011finizi ve OTP olu\u015fturma fonksiyonunu nas\u0131l yazaca\u011f\u0131n\u0131z\u0131 \u00f6\u011freneceksiniz. Bu ad\u0131mlar, WhatsApp \u00fczerinden OTP g\u00f6nderme uygulaman\u0131z\u0131n temelini olu\u015fturacakt\u0131r.<\/p>\n<h3>Proje Ba\u015flatma ve Temel Dosyalar<\/h3>\n<p>\u00d6ncelikle, projeniz i\u00e7in bir dizin olu\u015fturun ve Node.js projesini ba\u015flat\u0131n. Gerekli paketleri (<code>express<\/code>, <code>dotenv<\/code>, <code>twilio<\/code>) kural\u0131m:<\/p>\n<pre><code class=\"language-bash\">\nmkdir whatsapp-otp-sender\ncd whatsapp-otp-sender\nnpm init -y\nnpm install express dotenv twilio\n<\/pre>\n<p><\/code><\/p>\n<p>\u015eimdi ana uygulama dosyam\u0131z\u0131 (\u00f6rne\u011fin <code>app.js<\/code> veya <code>index.js<\/code>) ve ortam de\u011fi\u015fkenleri i\u00e7in <code>.env<\/code> dosyas\u0131n\u0131 olu\u015ftural\u0131m.<\/p>\n<h3>Ortam De\u011fi\u015fkenlerinin Y\u00f6netimi (.env)<\/h3>\n<p>API anahtarlar\u0131 ve di\u011fer hassas bilgileri do\u011frudan kodunuzda tutmak yerine, ortam de\u011fi\u015fkenleri kullanarak y\u00f6netmek en iyi g\u00fcvenlik uygulamas\u0131d\u0131r. Bunun i\u00e7in <code>dotenv<\/code> k\u00fct\u00fcphanesini kullanaca\u011f\u0131z. Proje dizininizin k\u00f6k\u00fcnde <code>.env<\/code> ad\u0131nda bir dosya olu\u015fturun ve a\u015fa\u011f\u0131daki bilgileri kendi Twilio hesab\u0131n\u0131zdan ald\u0131\u011f\u0131n\u0131z de\u011ferlerle doldurun:<\/p>\n<pre><code class=\"language-ini\">\nTWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nTWILIO_AUTH_TOKEN=your_auth_token\nTWILIO_WHATSAPP_NUMBER=+14155238886 # Twilio'dan ald\u0131\u011f\u0131n\u0131z WhatsApp \u00f6zellikli numara\nPORT=3000\n<\/pre>\n<p><\/code><\/p>\n<p><code>.env<\/code> dosyas\u0131n\u0131 <code>.gitignore<\/code> dosyan\u0131za eklemeyi unutmay\u0131n ki bu hassas bilgiler versiyon kontrol sisteminize y\u00fcklenmesin.<\/p>\n<h3>OTP \u00dcretme Fonksiyonu<\/h3>\n<p>OTP kodlar\u0131 genellikle rastgele olu\u015fturulmu\u015f say\u0131lardan olu\u015fur. A\u015fa\u011f\u0131daki basit fonksiyon, belirli uzunlukta say\u0131sal bir OTP kodu \u00fcretir:<\/p>\n<pre><code class=\"language-javascript\">\n\/**\n * Belirli uzunlukta rastgele bir say\u0131sal OTP kodu \u00fcretir.\n * @param {number} length - OTP kodunun uzunlu\u011fu (varsay\u0131lan 6).\n * @returns {string} \u00dcretilen OTP kodu.\n *\/\nfunction generateOTP(length = 6) {\n  const digits = '0123456789';\n  let otp = '';\n  for (let i = 0; i < length; i++) {\n    otp += digits[Math.floor(Math.random() * 10)];\n  }\n  return otp;\n}\n\n\/\/ \u00d6rnek kullan\u0131m:\n\/\/ const myOtp = generateOTP(6); \/\/ \"123456\" gibi bir \u00e7\u0131kt\u0131\n\/\/ console.log(myOtp);\n<\/pre>\n<p><\/code><\/p>\n<p>Bu fonksiyonu, bir kullan\u0131c\u0131ya OTP g\u00f6ndermeniz gerekti\u011finde \u00e7a\u011f\u0131racaks\u0131n\u0131z.<\/p>\n<h2>WhatsApp \u00dczerinden OTP G\u00f6nderme \u0130\u015flemi (Twilio \u00d6rne\u011fi)<\/h2>\n<p>Bu b\u00f6l\u00fcmde, Twilio'yu kullanarak Node.js uygulaman\u0131zdan WhatsApp \u00fczerinden nas\u0131l OTP g\u00f6nderece\u011finizi ad\u0131m ad\u0131m g\u00f6rece\u011fiz. Twilio, WhatsApp Business API'nin karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 basitle\u015ftiren pop\u00fcler bir ileti\u015fim platformudur.<\/p>\n<h3>Twilio Hesab\u0131 Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Twilio hesab\u0131n\u0131zda bir WhatsApp Sandbox numaras\u0131 kurman\u0131z veya WhatsApp Business API'ye eri\u015fim i\u00e7in onay alman\u0131z gerekmektedir. Sandbox, test ama\u00e7l\u0131 h\u0131zl\u0131 bir ba\u015flang\u0131\u00e7 sa\u011flar. Twilio konsolunuzda \"Programmable Messaging\" > \"WhatsApp\" > \"Sandbox\" b\u00f6l\u00fcm\u00fcne giderek talimatlar\u0131 takip edebilirsiniz. Genellikle, belirli bir kodu Twilio'nun WhatsApp numaras\u0131na g\u00f6ndererek kendi numaran\u0131z\u0131 sandbox'a ba\u011flaman\u0131z istenir.<\/p>\n<h3>Node.js Uygulamas\u0131nda Twilio Entegrasyonu<\/h3>\n<p>\u015eimdi <code>app.js<\/code> dosyam\u0131z\u0131 olu\u015ftural\u0131m ve Twilio k\u00fct\u00fcphanesini entegre edelim. Bu dosya, gelen istekleri dinleyecek ve OTP g\u00f6nderme i\u015flemini ger\u00e7ekle\u015ftirecek bir endpoint i\u00e7erecek.<\/p>\n<pre><code class=\"language-javascript\">\n\/\/ .env dosyas\u0131ndaki ortam de\u011fi\u015fkenlerini y\u00fckle\nrequire('dotenv').config(); \n\nconst express = require('express');\nconst twilio = require('twilio');\nconst app = express();\n\n\/\/ JSON body'leri ayr\u0131\u015ft\u0131rmak i\u00e7in middleware\napp.use(express.json());\n\n\/\/ Twilio kimlik bilgileri ortam de\u011fi\u015fkenlerinden al\u0131n\u0131r\nconst accountSid = process.env.TWILIO_ACCOUNT_SID;\nconst authToken = process.env.TWILIO_AUTH_TOKEN;\nconst client = new twilio(accountSid, authToken);\n\n\/\/ OTP \u00fcretme fonksiyonu (yukar\u0131daki \u00f6rnekten)\nfunction generateOTP(length = 6) {\n  const digits = '0123456789';\n  let otp = '';\n  for (let i = 0; i < length; i++) {\n    otp += digits[Math.floor(Math.random() * 10)];\n  }\n  return otp;\n}\n\n\/\/ OTP g\u00f6nderme endpoint'i\napp.post('\/send-otp', async (req, res) => {\n  const { phoneNumber } = req.body; \/\/ Kullan\u0131c\u0131n\u0131n WhatsApp numaras\u0131, \u00f6rn: \"+905xxxxxxxxx\"\n  \n  if (!phoneNumber) {\n    return res.status(400).send({ success: false, message: 'Telefon numaras\u0131 gerekli.' });\n  }\n\n  const otp = generateOTP();\n  const messageBody = <code>WhatsApp OTP kodunuz: ${otp}. L\u00fctfen kimseyle payla\u015fmay\u0131n ve s\u00fcresi 5 dakikad\u0131r.<\/code>;\n\n  try {\n    \/\/ Twilio API \u00fczerinden WhatsApp mesaj\u0131 g\u00f6nder\n    await client.messages.create({\n      from: 'whatsapp:' + process.env.TWILIO_WHATSAPP_NUMBER, \/\/ Twilio WhatsApp numaran\u0131z\n      to: 'whatsapp:' + phoneNumber, \/\/ Kullan\u0131c\u0131n\u0131n numaras\u0131\n      body: messageBody\n    });\n\n    \/\/ OTP'yi veritaban\u0131na veya \u00f6nbelle\u011fe kaydet (kullan\u0131c\u0131ya ve OTP s\u00fcresine ba\u011fl\u0131 olarak)\n    \/\/ \u00d6rn: saveOtpToDatabase(phoneNumber, otp, Date.now() + 5 * 60 * 1000); \/\/ 5 dakika ge\u00e7erlilik\n\n    console.log(<code>OTP ${otp} ba\u015far\u0131yla g\u00f6nderildi: ${phoneNumber}<\/code>);\n    res.status(200).send({ success: true, message: 'OTP ba\u015far\u0131yla g\u00f6nderildi.' });\n  } catch (error) {\n    console.error('OTP g\u00f6nderme hatas\u0131:', error);\n    res.status(500).send({ success: false, message: 'OTP g\u00f6nderme ba\u015far\u0131s\u0131z oldu.', error: error.message });\n  }\n});\n\n\/\/ Sunucuyu ba\u015flat\nconst PORT = process.env.PORT || 3000;\napp.listen(PORT, () => {\n  console.log(<code>Sunucu ${PORT} portunda \u00e7al\u0131\u015f\u0131yor.<\/code>);\n});\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kodu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, <code>POST \/send-otp<\/code> iste\u011fi yaparak bir telefon numaras\u0131na OTP g\u00f6nderebilirsiniz. \u00d6rne\u011fin, Postman veya cURL kullanarak:<\/p>\n<pre><code class=\"language-bash\">\ncurl -X POST -H \"Content-Type: application\/json\" \\\n     -d '{\"phoneNumber\": \"+905xxxxxxxxx\"}' \\\n     http:\/\/localhost:3000\/send-otp\n<\/pre>\n<p><\/code><\/p>\n<h3>OTP Mesaj\u0131 Olu\u015fturma ve G\u00f6nderme<\/h3>\n<p>Yukar\u0131daki kod \u00f6rne\u011finde, <code>messageBody<\/code> de\u011fi\u015fkeni ile basit bir OTP mesaj\u0131 olu\u015fturduk. WhatsApp mesaj \u015fablonlar\u0131 (Message Templates) kullanarak daha profesyonel ve onayl\u0131 mesajlar g\u00f6ndermeniz \u00f6nerilir. \u00d6zellikle ticari mesajlar ve OTP gibi bildirimler i\u00e7in Meta'n\u0131n onaylad\u0131\u011f\u0131 \u015fablonlar\u0131 kullanmak, mesajlar\u0131n spam olarak i\u015faretlenmesini engeller ve teslimat garantisini art\u0131r\u0131r. Twilio gibi sa\u011flay\u0131c\u0131lar, bu \u015fablonlar\u0131 olu\u015fturma ve y\u00f6netme konusunda size yard\u0131mc\u0131 olur.<\/p>\n<h3>Hata Y\u00f6netimi ve Durum Takibi<\/h3>\n<p>API \u00e7a\u011fr\u0131lar\u0131nda her zaman hata olu\u015fma ihtimali vard\u0131r (a\u011f sorunlar\u0131, ge\u00e7ersiz numaralar, API limitleri vb.). Kodunuzda <code>try-catch<\/code> bloklar\u0131 kullanarak bu hatalar\u0131 yakalamak ve kullan\u0131c\u0131ya anlaml\u0131 geri bildirimler sunmak \u00f6nemlidir. Ayr\u0131ca, g\u00f6nderilen her mesaj\u0131n durumunu (g\u00f6nderildi, teslim edildi, okundu, hata) takip etmek i\u00e7in Twilio'nun webhoook'lar\u0131n\u0131 kullanabilirsiniz. Bu, uygulaman\u0131z\u0131n g\u00fcvenilirli\u011fini ve kullan\u0131c\u0131 deneyimini art\u0131r\u0131r.<\/p>\n<h2>OTP Do\u011frulama ve G\u00fcvenlik \u0130pu\u00e7lar\u0131<\/h2>\n<p>OTP g\u00f6nderme kadar, g\u00f6nderilen OTP'nin do\u011fru ve g\u00fcvenli bir \u015fekilde do\u011frulanmas\u0131 da kritik \u00f6neme sahiptir. Ayr\u0131ca, sisteminizi olas\u0131 sald\u0131r\u0131lara kar\u015f\u0131 korumak i\u00e7in baz\u0131 g\u00fcvenlik \u00f6nlemleri almal\u0131s\u0131n\u0131z.<\/p>\n<h3>OTP Do\u011frulama Mekanizmas\u0131<\/h3>\n<p>Kullan\u0131c\u0131dan gelen OTP'yi do\u011frulamak i\u00e7in, g\u00f6nderdi\u011finiz OTP'yi bir veritaban\u0131nda veya \u00f6nbellekte (Redis gibi) kullan\u0131c\u0131n\u0131n telefon numaras\u0131 ve bir son kullanma tarihi ile birlikte saklaman\u0131z gerekir. Kullan\u0131c\u0131 do\u011frulama iste\u011fi g\u00f6nderdi\u011finde, gelen OTP'yi kaydedilen OTP ile kar\u015f\u0131la\u015ft\u0131r\u0131n ve s\u00fcresinin dolup dolmad\u0131\u011f\u0131n\u0131 kontrol edin.<\/p>\n<pre><code class=\"language-javascript\"><br \/>\n\/\/ \u00d6rnek bir do\u011frulama endpoint'i (app.js dosyan\u0131za eklenebilir)<br \/>\napp.post('\/verify-otp', async (req, res) => {<br \/>\n  const { phoneNumber, otp } = req.body;<\/p>\n<p>  if (!phoneNumber || !otp) {<br \/>\n    return res.status(400).send({ success: false, message: 'Telefon numaras\u0131 ve OTP gerekli.' });<br \/>\n  }<\/p>\n<p>  \/\/ Buras\u0131, OTP'yi veritaban\u0131ndan veya \u00f6nbellekten alaca\u011f\u0131n\u0131z yerdir.<br \/>\n  \/\/ Ger\u00e7ek bir uygulamada, bu k\u0131s\u0131m bir veritaban\u0131 sorgusu veya cache eri\u015fimi olacakt\u0131r.<br \/>\n  const storedOtpData = await getStoredOtpData(phoneNumber); \/\/ Bu fonksiyonu sizin yazman\u0131z gerekir<\/p>\n<p>  if (!storedOtpData) {<br \/>\n    return res.status(400).send({ success: false, message: 'OTP iste\u011fi bulunamad\u0131 veya s\u00fcresi doldu.' });<br \/>\n  }<\/p>\n<p>  const { storedOtp, expirationTime } = storedOtpData;<\/p>\n<p>  if (storedOtp !== otp) {<br \/>\n    return res.status(400).send({ success: false, message: 'Yanl\u0131\u015f OTP.' });<br \/>\n  }<\/p>\n<p>  if (Date.now() > expirationTime) {<br \/>\n    return res.status(400).send({ success: false, message: 'OTP s\u00fcresi doldu.' });<br \/>\n  }<\/p>\n<p>  \/\/ OTP ba\u015far\u0131l\u0131, kullan\u0131c\u0131y\u0131 do\u011frula ve gerekirse otur<\/p>\n","protected":false},"excerpt":{"rendered":"G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda kullan\u0131c\u0131 hesaplar\u0131n\u0131n g\u00fcvenli\u011fi her zamankinden daha kritik bir hale gelmi\u015ftir. Tek Kullan\u0131ml\u0131k \u015eifreler (OTP &#8211; On&#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[136],"tags":[],"class_list":{"0":"post-39221","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-node-js","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Node.js ile WhatsApp \u00dczerinden OTP Kodlar\u0131 Nas\u0131l G\u00f6nderilir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Node.js ile WhatsApp \u00dczerinden OTP Kodlar\u0131 Nas\u0131l G\u00f6nderilir?\" \/>\n<meta property=\"og:description\" content=\"G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda kullan\u0131c\u0131 hesaplar\u0131n\u0131n g\u00fcvenli\u011fi her zamankinden daha kritik bir hale gelmi\u015ftir. Tek Kullan\u0131ml\u0131k \u015eifreler (OTP - On...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-16T18:00:47+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Node.js ile WhatsApp \u00dczerinden OTP Kodlar\u0131 Nas\u0131l G\u00f6nderilir?\",\"datePublished\":\"2026-02-16T18:00:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/\"},\"wordCount\":2121,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Node.js\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/\",\"name\":\"Node.js ile WhatsApp \u00dczerinden OTP Kodlar\u0131 Nas\u0131l G\u00f6nderilir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-16T18:00:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Node.js ile WhatsApp \u00dczerinden OTP Kodlar\u0131 Nas\u0131l G\u00f6nderilir?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Node.js ile WhatsApp \u00dczerinden OTP Kodlar\u0131 Nas\u0131l G\u00f6nderilir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/","og_locale":"tr_TR","og_type":"article","og_title":"Node.js ile WhatsApp \u00dczerinden OTP Kodlar\u0131 Nas\u0131l G\u00f6nderilir?","og_description":"G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda kullan\u0131c\u0131 hesaplar\u0131n\u0131n g\u00fcvenli\u011fi her zamankinden daha kritik bir hale gelmi\u015ftir. Tek Kullan\u0131ml\u0131k \u015eifreler (OTP - On...","og_url":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-16T18:00:47+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"13 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Node.js ile WhatsApp \u00dczerinden OTP Kodlar\u0131 Nas\u0131l G\u00f6nderilir?","datePublished":"2026-02-16T18:00:47+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/"},"wordCount":2121,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Node.js"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/","url":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/","name":"Node.js ile WhatsApp \u00dczerinden OTP Kodlar\u0131 Nas\u0131l G\u00f6nderilir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-16T18:00:47+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/node-js-ile-whatsapp-uzerinden-otp-kodlari-nasil-gonderilir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Node.js ile WhatsApp \u00dczerinden OTP Kodlar\u0131 Nas\u0131l G\u00f6nderilir?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=39221"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39221\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=39221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=39221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=39221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}