Async/Await

Async/Await

Nodejs platformunda async/await yapısının kullanımının öğretildiği bu makalede, veritabanı işlemleri, uzak sunucu istekleri gibi durumlarda async ve await yapısının daha okunaklı ve düzenli bir kod yazımını sağladığı vurgulanıyor Async ve await yapılarının kullanımının programlama sürecinde oldukça faydalı olduğu ve özellikle veritabanlarından veri çekme ve API istekleri gibi durumlarda işlemlerin daha hızlı ve hatasız bir şekilde gerçekleştirilmesini sağladığı belirtiliyor MySQL ve MongoDB veritabanlarından veri alma işlemlerinde dikkat edilmesi gereken noktaların da açıklandığı makalede, async/await yapısının kullanımının programlama sürecinde ne kadar faydalı olduğuna dikkat çekiliyor

Async/Await

Bu makalede, Node.js platformunda async/await yapısının doğru bir şekilde kullanımına odaklanacağız. Belirtmek gerekir ki, Node.js kullanıcılarına sağladığı avantajlarından biri, işlemleri asenkron bir şekilde gerçekleştirebiliyor olmamızdır. Ancak, veritabanı işlemleri, uzak sunucu istekleri gibi bazı durumlarda, işlemlerimizin bitmesini beklemek zorunda kalırız. İşte bu noktada async ve await yapısı, diğer sık kullanılan callback yöntemlerine kıyasla daha okunaklı ve düzenli bir kod yazımını sağlayarak, işlemlerimizi daha da hızlandırır.


Async Hakkında

Async, asenkron işlemleri çalıştırmamızı sağlayan bir yapıdır. Node.js'nin single-thread yapısı, asenkron işlemleri yönetirken çok çekirdekli işlemcilerden faydalanır. Bu sayede, sırayla çalışan senkron kodlara göre çok daha hızlı ve verimli çalışırız. Async yapısı, callback fonksiyonlarının karmaşıklığını azaltır ve kodun okunmasını da kolaylaştırır.

Async fonksiyonları, normal fonksiyonlardan farklıdır. Async fonksiyonlarında, fonksiyon çağrısı yapıldığında işlem hemen sonuç döndürmez. Bunun yerine, bir esneklik sağlanır ve işlemin bitmesi beklenir. Bu esneklik, veritabanı sorguları, dosya okuma/yazma işlemleri, API istekleri gibi işlemlerde oldukça faydalıdır.

Async kullanarak, işlem sırasıyla ilgilenmek zorunda kalmadan paralel işlemler gerçekleştirebiliriz. Bunun yanı sıra, kodda meydana gelebilecek hatalarla daha rahat başa çıkabiliriz. Async fonksiyonları kullanarak, callback hell yani callback cehennemi probleminin de önüne geçebiliriz.


Await Hakkında

Node.js'de await yapısı, async fonksiyonlarının tamamlandığı anlamına gelir. Yani, async bir fonksiyonda await kullanıldığında, o anda çalıştırılan fonksiyonun, await kullanılan fonksiyonun tamamlanmasını beklemesi gerekmektedir. Bu konsept, programlama sürecinde oldukça faydalıdır çünkü bu sayede, asenkron fonksiyonların zincirleme kullanımı önlenir ve kod daha okunaklı ve anlaşılır hale gelir.

Özellikle veritabanlarından veri alma işlemlerinde await yapısı oldukça kullanışlıdır. Çünkü asenkron bir yapıda çalışan veritabanlarından gelen verilerin, tam olarak alınana kadar beklenmesi gerekmektedir. Ayrıca, await'in kullanımı, HTTP istekleri gibi diğer asenkron fonksiyonların da yönetilmesi açısından önemlidir.

await yapısı, asenkron fonksiyonların işleyiş sürecini kolaylaştırırken, programlamada hataların da önüne geçer. Çünkü bu sayede, beklenmeyen hataların önüne geçilir ve program çökme riski azaltılır.

Sonuç olarak, Node.js'de await yapısı, özellikle asenkron fonksiyonlarla çalışırken oldukça değerli bir araçtır. Hem kodların daha okunaklı ve anlaşılır bir hale gelmesine yardımcı olur, hem de hataların önüne geçer.


Veritabanlarından Veri Alma

Veritabanlarından veri almak uzun ve zorlu bir süreç olabilir. Ancak, Node.js'te async/await kullanarak bu işlemi kolaylaştırabiliriz. Async/await yapısını kullanarak veritabanlarına bağlanabilir, verileri çekebilir ve işlemleri sonlandırabiliriz.

Örneğin, MySQL veritabanını kullanarak veri alma işlemini gerçekleştirelim. Async/await kullanarak MySQL veritabanına bağlandığımızda, işlemlerimizde daha hızlı ve hatasız olacağından emin olabiliriz. Ayrıca, MongoDB veritabanını kullanan örnekleri de inceleyerek async/await yapısının nasıl kullanılabileceğine daha ayrıntılı bir şekilde bakabiliriz.

Async/await yapısı, API isteklerinde de oldukça kullanışlıdır. Express.js ile yapacağımız API isteklerinde, async/await yapısını kullanarak işlemlerimizi daha hızlı ve hatasız bir şekilde gerçekleştirebiliriz. Ayrıca, üçüncü taraf API'lerinden veri alma örnekleri de mevcuttur.

Bir diğer veri sağlama yöntemi ise mock data kullanmaktır. Bu yöntem sayesinde, kodlama sürecimizi hızlandırabilir ve test etme sürecimizi kolaylaştırabiliriz. Scraping yöntemi de veri almak için oldukça sık kullanılan bir yöntemdir. Bu yöntemi kullanarak, web sitelerinden veri kazıma işlemini gerçekleştirebiliriz.


MySQL Veritabanı

MySQL veritabanlarından veri alırken async/await kullanırken bazı dikkat edilmesi gerekenler vardır. Bunlar şöyledir:

  • Bağlantı açıldıktan sonra kapatılmalıdır: Veritabanına bağlandıktan sonra veri alınana kadar bağlantının açık kalması performans sorunlarına neden olabilir. Bu nedenle veri alımı tamamlandıktan sonra bağlantı hemen kapatılmalıdır.
  • Try/Catch blokları kullanılmalıdır: Veri tabanlarından veri alırken her zaman hatalarla karşılaşılabilir. Bu nedenle try/catch blokları kullanarak hataların kontrol edilmesi ve uygun şekilde işlenmesi gerekir.
  • Promise yapısı kullanılmalıdır: MySQL veritabanı işlemleri de asenkron yapıdadır. Bu nedenle Promise yapısı kullanarak işlemin başlatılması ve sonucunun beklenmesi gerekir.
  • Pooling yapısı kullanılmalıdır: Yüksek trafikli bir web uygulamasına sahipseniz, veritabanı bağlantıları oluşturma / sonlandırma işlemleri çok yüksek olabilir. Bu nedenle, sunucu tarafında belirli bir sayıda "havuz" bağlantısı oluşturarak her bağlantı ihtiyacında havuzdaki bir bağlantıyı kullanarak işleri halletmek daha hızlı olabilir.

MongoDB Veritabanı

MongoDB Veritabanı'na async/await kullanarak veri çekme oldukça kolaydır. Bu yöntem, veritabanındaki bir veya birkaç kayıdı seçmenizi ve sonuçları kolayca işlemenizi sağlar. Aşağıda, MongoDB veritabanından veri çekmek için async/await kullanarak bir örnek gösterilmiştir:

```const mongodb = require('mongodb');const MongoClient = mongodb.MongoClient;

async function veriCek(dbUrl, dbCollection) { const client = await MongoClient.connect(dbUrl, { useUnifiedTopology: true }); const collection = client.db().collection(dbCollection); const result = await collection.find({}).toArray(); client.close(); return result;}```

Yukarıdaki kod örneğinde, `mongodb` paketi kullanarak MongoDB veritabanıyla bağlantı kurulmaktadır. `MongoClient`'in `connect()` fonksiyonu, veritabanı URL'sini ve seçilen seçenekleri kabul eder. `db()` fonksiyonu, veri tabanına erişmek için kullanılırken, `collection()` fonksiyonu, veritabanından belirli bir koleksiyona erişmek için kullanılır. `find()` fonksiyonu, koleksiyondaki tüm kayıtları getirirken, `toArray()` fonksiyonu, sonucu dizi haline getirerek işlemeyi kolaylaştırır.

Bu örnekte, `veriCek()` isimli bir özellik tanımlanmıştır. İşlevin iki parametresi vardır: veritabanı URL'si (`dbUrl`) ve erişilecek koleksiyonun adı (`dbCollection`). İşlev, veritabanındaki tüm belgeleri getirir ve sonucu bir dizi olarak döndürür.

Async/await kullanarak MongoDB veritabanından veri çekmek için keyifli ve kullanışlı bir yöntemdir. Bu yöntemle, veritabanından veri çekme işleminiz daha okunaklı, daha yönetilebilir ve sorunsuz hale gelir.


API İstekleri

Node.js'te API istekleri yapmak için async/await kullanmak hızlı ve hatasız bir yöntemdir. Bunun için, isteklerin yapıldığı HTTP kütüphanesi (örneğin Axios, Request) 'promisify' edilir ve 'await' anahtar kelimesi ile isteklerin sonlanması beklenir.

Express.js ile API istekleri yaparken, 'asyncMiddleware' kullanarak hata yakalama ve yönetimi sağlamak önemlidir. Bu yöntem, herhangi bir hata durumunda hatayı yakalar ve global error handler'a gönderir.

Üçüncü taraf API'lardan veri alma örnekleri için, API anahtarları ve gerekli yetkilendirmelerin alındığından emin olunmalıdır. Bu, 'dotenv' veya benzeri bir kütüphane ile kolayca yapılabilir. Ardından, kullanılan API'nin belgelerine uygun şekilde yapılandırılmış istekler atılabilir.

API isteklerinde kullanılan veri formatı, genellikle JSON veya XML şeklindedir. Veri işleme adımları için 'try-catch' blokları kullanmak hatasız bir kod yazmada yardımcı olabilir.


Express.js API İstekleri

Express.js, Node.js tabanlı bir web uygulama çatısıdır. Express.js ile web uygulamaları kolayca oluşturulabilir ve yönetilebilir. Ancak, Express.js ile API isteklerinde bulunurken dikkat edilmesi gereken bazı noktalar vardır. Bu makalede, async/await yapısını kullanarak Express.js ile API istekleri yaparken nelere dikkat edilmesi gerektiği hakkında bilgi vereceğiz.

Express.js ile API istekleri sırasında, async/await yapısı kullanarak isteklerimizi kolayca yönetebiliriz. Async/await ile isteklerimizin tamamlanmasını beklerken başka işlemlerimizi de aynı anda yapabiliriz. Bununla birlikte, Express.js API isteklerinde dikkat edilmesi gereken bazı noktalar vardır. Örneğin, güvenlik amacıyla bir API anahtarı kullanmak, gelen istekleri doğrulamak, hatalara karşı güvenli bir yapı oluşturmak gibi..

Express.js ile kullanacağımız API'ların dökümantasyonunu dikkatlice okumalıyız ve isteklerimizi bu doğrultuda yapmalıyız. Ayrıca, async/await yapısını kullanırken, timeout sürelerine dikkat etmeliyiz. İstekler uzun süre cevap vermediğinde, bir hata verilmesi veya tekrar deneme yapılması gerekebilir.

Express.js ile API istekleri yaparken, error handling işlemlerine de dikkat etmemiz gerekiyor. Try-catch yapısı kullanarak, oluşabilecek hatalara karşı önlem alabiliriz. Ayrıca, isteklerimizin sonucunu farklı hallerde ele alabilmek için, promise yapılarını da kullanabiliriz. Bu sayede, istek sonucuna göre farklı işlemler yapabilir ve verileri farklı şekillerde gösterebiliriz.

Özetle, Express.js kullanarak API istekleri yaparken, async/await yapısını dikkatli bir şekilde kullanmalıyız. İsteklerimizi güvenlikli hale getirmek, timeout sürelerine dikkat etmek ve error handling işlemlerini sağlamak gibi noktalara özen göstermeliyiz. Bu sayede, uygulamalarımızın daha verimli ve güvenli hale gelmesini sağlayabiliriz.


Third-party API İstekleri

Üçüncü taraf API'lar, işlevleri veya verileri sunan web hizmetleridir. Bu API'ların kullanıcılar tarafından kullanılmadan önce API sahibi tarafından belirli bir arayüzle onaylanması gerekir. Node.js'te, üçüncü taraf API'lardan veri çekmek için async/await yapısını kullanabilirsiniz.

Örneğin, bir hava durumu uygulaması yapmak istediğinizi varsayalım. Bu uygulama, OpenWeatherMap API'sından canlı hava durumu verilerini almalıdır. async/await kullanarak, API'dan veri almak için Node.js kodunu aşağıdaki gibi yazabilirsiniz:

Adım Kod
1
async function fetchWeather() {  const response = await fetch('https://api.openweathermap.org/data/2.5/weather?q=Istanbul&appid={API key}');  const json = await response.json();  return json;}
2 API anahtarınızı ekleyin
3
fetchWeather()  .then(json => console.log(json))  .catch(err => console.error(err));

Bu kod bloğu, Istanbul'daki hava durumunu OpenWeatherMap API'sinden çeker. API anahtarınızı doyurabileceğiniz ve hedeflenen şehri güncelleyebileceğiniz '{API key}' kısmını ekleyin.

async/await kullanmanın en büyük avantajı, kodunuzun okunabilirliğini ve bakımını kolaylaştırmasıdır. Bu yapı sayesinde, API yanıtı beklerken kodunuzu durdurmak ve kursunuza devam etmek yerine, beklemek yerine doğru zamanda işlemleri gerçekleştirmeniz mümkündür.

Bununla birlikte, üçüncü taraf API'ların gerektirdiği hata işleme ve döndürme kodunu hatırlamakta yarar var. Bir yanıt hatalıysa, doğru bir şekilde işlemek önemlidir.


Veri Sağlama Yöntemleri

Node.js, günümüzde popüler bir veri sağlama platformudur. Veritabanlarından, API'lerden veya web sitelerinden veri sağlama yöntemleri kullanarak, Node.js ile bu verilerin alınması hızlı ve kolay hale gelir. Bu bölümde, Node.js'te veri sağlama yöntemleri ve kullanım örnekleri ele alınacaktır.

Mock data kullanımı, geliştirme ve test amaçlı kodlama sürecini hızlandırmak için sıkça tercih edilir. Bu yöntem, örnek verilerin oluşturulması ve kullanılması suretiyle, özellikle daha büyük projelerde zaman ve iş gücünden tasarruf sağlar. Mock data kullanımı, veri modelleme ve sunum işlemlerinin hızlı yapılmasına ve veri kaynaklarından bağımsız hale gelinmesine yardımcı olur.

Scraping ise, Veri Sağlama Yöntemleri'nin önemli bir parçasıdır ve web sitelerinden çeşitli verilerin kazınması için kullanılan bir tekniktir. Bu yöntem, özellikle rakip analizi ve fiyat karşılaştırması gibi amaçlar için kullanılır. Node.js'te Scraping işlemlerinin gerçekleştirilmesi, hazır özelliklere sahip tools'ların kullanılması veya özel scriptlerin yazılması yoluyla gerçekleştirilebilir.

Sonuç olarak, Node.js'te veri sağlama yöntemleri, birçok farklı amaç için kullanılabilir. Veritabanlarından, API'lerden veya web sitelerinden veri almak için Async/Await, Mock Data ve Scraping teknikleri oldukça faydalıdır. Bu yöntemler, zaman ve iş gücünden tasarruf edilmesine ve veri sağlama işlemi sırasında hataların azaltılmasına yardımcı olur.


Mock Data Kullanma

Mock data kullanmak, veritabanında veya dışarıdan veri çekmeniz gereken durumlarda kullanışlı bir yöntemdir. Bu yöntem, veri doldurma ve test işlemlerinde yardımcı olurken, kodlama sürecini de hızlandırır. Verileri yazarken test ortamınızın etkilenmesini engeller ve gerçek verileri kullanmamanızı sağlar.

Mock data oluşturma işlemlerinde farklı paketler kullanılabilir. Bunlar arasında Faker.js, Chance.js, ve Casual.js gibi seçenekler yer alır. Bu paketler sayesinde örnek veriler oluşturmak kolaylaşır ve zaman kaybı engellenir.

Mock data kullanımı, kodlama sürecinde yaşanabilecek hataları tespit etmek için de oldukça faydalıdır. Bu yöntem sayesinde birden fazla senaryo üzerinde çalışılabilir. Veri çeşitliliği arttıkça, olası hatalar da daha kolay saptanabilir.

Mock data oluşturma işlemleri, JSON dosyalarından random veriler oluşturmayı içerir. Bunun için, yaratmak istediğiniz veri formatına uygun bir JSON dosyası oluşturmanız gerekir. Ardından, kullanacağınız paketi seçip, verileri oluşturmaya başlayabilirsiniz.

  • Faker.js: Kişisel veriler, adresler, telefon numaraları vb. gibi farklı kategorilerde veriler oluşturmanıza olanak tanır.
  • Chance.js: Hem string hem de sayısal veriler için random değerler oluşturmanızı sağlar.
  • Casual.js: Üçüncü parti API'lar veya veritabanlarından veri çekerken kullanabileceğiniz, özelleştirilebilir mock data seçenekleri sunar.

Mock data kullanarak, veri oluşturma ve test etme işlemlerinin yanında hızlı ve hatasız kodlama süreci sağlayabilirsiniz.


Scraping

Scraping, web sitelerinden veri kazıma yöntemleri arasında yer alır. Birçok işlemi otomatize etmek için kullanılan bir tekniktir. Web sayfalarındaki verileri toplamak için çeşitli yöntemler kullanılabilir. Örneğin, manuel olarak sayfaları açarak verileri kopyalayıp yapıştırabilirsiniz, ancak bu yöntem oldukça zaman alıcıdır. İşte burada öğrenmek istediğimiz şey olan scraping devreye giriyor.

Scraping, bir web sayfasındaki belirli verileri otomatik olarak alabilme işlemidir. Bu işlem, verileri toplamak ve analiz etmek için oldukça güçlü bir araçtır. Belirli sitelerden verileri koleksiyon haline getirme, araştırma yaparken veriye ihtiyaç duyduğunuz her türlü alanda kullanılabilir.

Bu işlemleri yapabilmek için bazı scraping araçları kullanabilirsiniz. Özellikle Python programlama dili ile birçok scraping aracı mevcuttur. Bunlardan bazıları, BeautifulSoup, Scrapy ve Selenium gibi araçlardır. Bu araçlar birbirinden farklı özellikler sunar ve kullanım kolaylığı sağlar.

Scraping yaparken, etik olmayan bir şekilde web sitelerinden veri çekmemelisiniz. İzin alınmadan veya site sahibinin izni olmadan veri çekmek, hukuki sorunlara yol açabilir. Bu nedenle, sitelerin robots.txt dosyalarını ve kullanım şartlarını incelemeniz önerilir. Ayrıca, scraping yaparken sıklıkla tekrarlanan istekler nedeniyle bir web sitesine yük bindirebilirsiniz. Bu nedenle, scraping işlemlerini bölüştürmek ve yavaşlatmak önemlidir.

Sonuç olarak, web sitelerinden veri kazıma yöntemleri ve scraping araçları oldukça önemlidir. Bu tekniklerin kullanımı, verileri otomatik olarak toplamak ve analiz etmek için oldukça güçlü bir araçtır. Ancak bu teknikleri kullanırken, hukuki sorunlara yol açmamak için uygun izinleri almak ve yavaşlatmak önemlidir.