Bu makalede, Nodejs kullanarak veritabanı işlemleri yapmak için Hapijs ve Knexjs araçlarının nasıl kullanılabileceği anlatılmaktadır Hapijs, HTTP sunucusunun özelliklerini kullanarak RESTful API'lar kolayca oluşturmanızı sağlayan bir framework'tür Knexjs ise SQL sorguları oluşturmak için kullanılan bir sorgu yapıcısıdır Bu araçların bir arada kullanılması veritabanı işlemlerinin daha kolay ve hızlı bir şekilde gerçekleştirilmesine olanak tanır Hapijs ile rota oluşturma, doğrulama ve yetkilendirme işlemleri yapılabilirken, Knexjs ile sorgu oluşturma ve veritabanı işlemleri gerçekleştirilebilir Hapijs ve Knexjs kullanarak RESTful API'larınızda veritabanı işlemleri yapabilir ve uygulama geliştirme sürecini hızlandırabilirsiniz
Bu makalede, Node.js kullanarak veritabanı işlemlerini gerçekleştirmenin en iyi yollarından ikisi olan Hapi.js ve Knex.js hakkında bilgi verilecek. Hapi.js, RESTful API'lar oluşturmak için kullanılan güçlü bir araçtır ve HTTP sunucusunun özelliklerini kullanmanızı sağlar. Knex.js ise SQL sorguları oluşturmak için kullanılan bir sorgu yapıcısıdır. Bu iki araç bir arada kullanıldığında, veritabanı işlemleri yapmak oldukça kolay hale gelir.
Hapi.js ve Knex.js kullanarak veritabanı işlemleri yapmak için öncelikle bu araçların nasıl kurulacağını öğrenmek gerekiyor. Daha sonra Hapi.js ile rota oluşturma, doğrulama ve yetkilendirme işlemlerini gerçekleştirebilirsiniz. Yine Hapi.js kullanarak PostgreSQL gibi bir veritabanı ile bağlantı kurabilir ve CRUD işlemlerini gerçekleştirebilirsiniz. Ayrıca Joi kütüphanesi ile girdileri filtreleyebilir ve doğrulayabilirsiniz.
Knex.js kullanarak ise sorgular oluşturabilir ve veritabanı işlemlerini gerçekleştirebilirsiniz. Knex.js ile yeni bir veritabanı oluşturma ve tabloları oluşturma işlemleri de oldukça kolaydır. Bu araçla SQL sorgularını kullanarak veritabanına erişebilir ve işlem yapabilirsiniz. Hapi.js ve Knex.js kullanarak RESTful API'larınızda bir veritabanına bağlanabilir ve işlemler gerçekleştirebilirsiniz.
Hapi.js
Hapi.js, Node.js tabanlı bir framework olup, HTTP sunucusunun özelliklerini kullanarak RESTful API'ları hızlı ve kolay bir şekilde oluşturmanıza olanak tanır. Hapi.js, özelleştirilebilir routing, doğrulama ve yetkilendirme, veritabanı işlemleri ve veri doğrulama gibi birçok özelliği içinde barındırır.
REST, web servislerini tanımlamak ve oluşturmak için kullanılan bir mimaridir. Hapi.js, REST prensiplerini kullanarak API'larınızı tasarlayabileceğiniz, kurallara uygun bir şekilde yazabileceğiniz ve yönetebileceğiniz famework'lerden biridir. API'ların HTTP metodları (GET, POST, PUT, DELETE vb.), endpoint'leri ve veri formatlarının (JSON, XML vb.) ayarlanması da REST’in temel prensiplerine dayanmaktadır.
Hapi.js, framework olarak kullanım kolaylığı sağlarken, kodlamayı daha organize bir hale getirebileceğiniz metodlar ve araçlar sunar. Bu sayede kodun karmaşıklığı azaltılır, kaynaklar daha etkili kullanılır. HTTP sunucusunun özelliklerini kullanarak route işlemleri yapar, doğrulama ve yetkilendirme araçları sunar. Bu sayede emek, zaman ve iş yükünden tasarruf edersiniz.
Özet olarak, Hapi.js kullanımı kolaydır ve REST prensiplerine uygun API'lar oluşturmanıza yardımcı olur. HTTP sunucusunun özellikleriyle birleşince güçlü bir yapı oluşur ve geliştirici için işler daha da kolaylaşır.
Hapi.js Nasıl Kurulur?
Hapi.js, Node.js için kullanışlı bir çerçevedir. Hapi.js kullanarak HTTP sunucuları ve RESTful API’lar oluşturabilirsiniz. Ancak, öncelikle Hapi.js'in nasıl kurulacağına ve başlatılacağına değinmemiz gerekir.
İşte, Hapi.js'i yüklemek ve başlatmak için adımlar:
- 1- Node.js yüklemesi yapın. Node.js yüklü olmadan Hapi.js kullanamazsınız.
- 2- Yeni bir proje oluşturun ve proje dizinine girin.
- 3- Terminalde
npm init
komutunu çalıştırın ve temel şekilde projenizi yapılandırın - 4- Hapi.js yüklemek için terminalde
npm install hapi
komutunu çalıştırın. - 5- Yükleme tamamlandıktan sonra, uygulamanızda Hapi.js kullanmak için
require('hapi')
satırını ekleyin. - 6- Son olarak, HTTP sunucusunu başlatmak için
server.start()
yöntemini çağırın.
Bu adımları takip ederek Hapi.js'i yükleyebilirsiniz. Bundan sonra, Hapi.js ile RESTful API'lar oluşturabilir ve HTTP sunucusunun birden fazla özelliğinden yararlanabilirsiniz.
Hapi.js'te Rota Oluşturma
Hapi.js, şık ve anlaşılır bir rota modeli kullanır. .route() adında bir yöntem ile gelen HTTP isteklerinin rota tanımlamalarını yapabilirsiniz. Bu metot, HTTP isteklerini işlemek ve yanıtlamak için kullanabileceğiniz çeşitli yararlı yöntemler sunmaktadır. Buna örnek olarak, GET, POST, DELETE ve PUT
gibi HTTP yöntemlerini kullanarak CRUD işlemlerini gerçekleştirebilirsiniz.
Bu rota tanımlamaları için .handler()
yöntemini kullanabilirsiniz. İşleyici, rota dizesi ve rota seçenekleri parametrelerini kabul eder. Ayrıca, yanıtı mümkün olan en iyi şekilde biçimlendirmek için kullanabileceğiniz response
nesnesini de oluşturur. Yanıtta kullanabileceğiniz araçlar da özelleştirilebilir, böylece yanıtı mümkün olan en iyi şekilde biçimlendirebilirsiniz.
Parametre | Açıklama |
---|---|
route | Bir rota şablonu tanımlayın. |
handler | Rota isteği ile eşleştiğinde gerçekleştirilmesi gereken işlem. |
config | Ayarlar nesnesi, API sorgularını kullanıcıların oturum açma durumlarına göre düzenliyor. |
Belirtmek gerekir ki, rota tanımları genellikle yönlendiricilerdeki birçok rota oluşturma işlevli metotlarında tanımlanır. Örneğin, server.route()
kullanarak rota tanımlama işlemlerini ayrı tanımlayabilirsiniz.
Hapi.js'te Doğrulama ve Yetkilendirme
Hapi.js, kullanıcıların doğrulanması ve yetkilendirilmesi için Authenticator ve Authorization araçlarına sahiptir. Authenticator, kullanıcıların kimliklerini doğrulamak için tasarlanmıştır. Authorization ise kullanıcılara hangi verilere erişebileceklerini belirleme yetkisi verir.
Authenticator ve Authorization araçlarını kullanarak, kullanıcılara belirli roller atayabilir ve bunlara göre veritabanına erişimlerini sınırlayabilirsiniz. Örneğin, bir kullanıcı sadece okuma yetkisi verilen belirli bir tabloyu görebilirken, diğer bir kullanıcı bu tabloyu görme ve güncelleme yetkisine sahip olabilir.
Hapi.js ayrıca, girdileri doğrulamak için Joi kütüphanesi ile de entegre edilmiştir. Joi kütüphanesi, gelen verileri filtreleyerek ve doğrulayarak güvenliği artırır. Bu nedenle, özellikle kullanıcıların girdileriyle ilgili işlemleri gerçekleştirdiği durumlarda kullanışlıdır.
Ayrıca Hapi.js, OAuth ve JWT gibi popüler kimlik doğrulama yöntemlerini de destekler. Bu sayede, kullanıcıların sosyal medya hesapları ile giriş yapmalarına olanak sağlayarak işlemleri daha da kolaylaştırabilirsiniz.
Hapi.js ile Veritabanı İşlemleri
Hapi.js, web uygulamaları oluşturmak için kullanabileceğiniz, gelişmiş bir Node.js çerçevesidir. PostgreSQL gibi bir veritabanıyla bağlantı kurmak ve veritabanı işlemleri gerçekleştirmek için de kullanılabilir. Veritabanı işlemleri, kullanıcıların bilgilerini depolama, ürünlerle ilgili bilgileri güncelleme, blog yazıları oluşturma gibi birçok senaryoya sahip olabilir.
Hapi.js üzerinde PostgreSQL ile veritabanı işlemleri yapmak oldukça kolaydır. İlk olarak, projenize `pg` adlı PostgreSQL sürücüsünü yüklemeniz gerekiyor. Daha sonra, `knex` adlı bir SQL yapıcısıyla kurulum yapabilirsiniz. Knex.js, Hapi.js ile birlikte kullanılmak üzere tasarlanmıştır ve veritabanı işlemlerini yönetmek için kullanılabilecek birçok yöntemi sunar.
Veritabanı işlemleri, aşağıdaki adımlarla gerçekleştirilebilir:
- Bağlantı oluşturma: Knex.js kullanarak PostgreSQL veritabanınıza bağlantı kurabilirsiniz.
- CRUD işlemleri: Hapi.js'in entegre ettiği yöntemler sayesinde, veritabanındaki tablolarınız üzerinde basitçe okuma, ekleme, güncelleme ve silme (CRUD) işlemleri gerçekleştirebilirsiniz.
- Veri doğrulama: Hapi.js'in Joi aracı, kullanıcının girdilerini doğrulamanıza ve filtrasyon yapmanıza izin verir.
Hapi.js ve Knex.js kullanarak veritabanı işlemleri yapmak, ölçeklenebilir ve güvenli bir uygulama oluşturma konusunda size avantaj sağlar. Bu araçlar, veri tabanı işlemlerinin yanı sıra, doğrulama ve yetkilendirme işlemlerini entegre etmenize de olanak tanır.
Hapi.js'te CRUD İşlemleri
Hapi.js, URL isteklerinin yönetimi için entegre edilmiş CRUD yöntemleriyle birlikte gelir. Bunlar, veritabanındaki kayıtların oluşturulması, okunması, güncellenmesi ve silinmesidir.
Oluşturma işlemi için, istemcinin HTTP isteği, sunucunun POST isteği dinlemesiyle uygun rota üzerine yönlendirilir. Bu istekteki veriler, JSON formatında istek gövdesinde paylaşılır. Resim, video, dosya vb. verileri saklamak için sunucu tarafında genellikle indirme bağlantıları kullanılır. Hapi.js, ```handler``` yöntemiyle veritabanına erişim sağlamak için bir rota oluşturur. Bu yöntem, yaratmak istediğimiz işlemdeki hata durumlarını yakalar ve bize bir hata mesajı döndürür.
Güncelleme işleminde, istek yöntemi PUT'tur. İstemci tarafından gönderilen güncellenmiş veriler de JSON formatında gövdede yer alır. Sunucu tarafında ```handler``` yöneticisi kullanılarak ilgili rota erişilir ve güncelleme işlemi veritabanında gerçekleştirilir. Güncelleme esnasında veritabanındaki id numarasıyla doğru kayda ulaşılması için ```where``` fonksiyonu kullanılır.
Okuma işlemi, istek yöntemi GET ile gerçekleştirilir. Hapi.js, bu işlem için entegre bir yöntem sunar. ```find``` fonksiyonu sayesinde yaşam döngüsündeki tüm kayıtlara erişebiliriz. İsteğimizle eşleşen kayıdı almak için ```where``` fonksiyonunu kullanırız. Daha detaylı bir arama için Hapi.js, ```filter``` fonksiyonu kullanarak filtreleme işlemini gerçekleştirir.
Silme işlemi, istek yöntemi DELETE ile yapılır. İsteğimizle eşleşen kayıtlar, ```find``` ve ```where``` fonksiyonları sayesinde seçilir ve ```del``` fonksiyonu kullanılarak veritabanından silinir. Bu işlem sırasında, silme işleminin başarılı olup olmadığı hakkında bir hata mesajı döndürür.
Hapi.js ve Joi Kullanarak Veri Doğrulama
Hapi.js, HTTP sunucusunda doğrulama yapmak için kullanabileceğiniz mükemmel bir araçtır. Joi kütüphanesini Hapi.js ile birlikte kullanarak doğrulama ve veri filtreleme işlemleri yapabilirsiniz.
Joi, JSON verilerinin doğrulamasını ve tamponlamasını kolaylaştıran bir JavaScript kütüphanesidir. Verilerin doğru formatta olup olmadığını kontrol etmek için Joi önceden tanımlanmış kurallar kullanır. Joi kütüphanesi ile girilen verilerin, belirtilen özelliklere sahip olup olmadığını söyleyen esnek ve basit bir yapı oluşturulabilir.
Hapi.js ve Joi kütüphanesi kullanarak bir örnek düşünelim. Bir kullanıcının adını, şirketini, e-posta adresini ve şifresini kaydetmeyi amaçlayan bir web uygulaması geliştirelim. İlk önce veri şemasını belirlememiz gerekiyor. Joi kullanarak veri şemasını belirlemeliyiz.
Girdi | Tipi | Kural |
---|---|---|
Ad | string | Zorunlu |
Şirket | string | Zorunlu |
E-Posta | string | Zorunlu, e-posta formatında olmalıdır |
Şifre | string | Zorunlu, en az 6 karakter uzunluğunda olmalıdır. |
Veri şemasını tanımladıktan sonra, Hapi.js uygulamasına Joi kütüphanesi entegre edilir. En özelleştirilmiş doğrulama işlemi için Hapi.js'in doğrulama araçlarından yararlanabilirsiniz. Veri doğrulamayla geçerlilik kontrolünden geçirilir ve daha sonra kullanıcı tarafından sunucuya gönderilir.
Knex.js
Knex.js Nedir?
Knex.js, SQL yapmak için kullanabileceğiniz bir sorgu yapıcısıdır. İster PostgreSQL, MySQL, SQLite veya Oracle gibi bir veritabanı kullanın, Knex.js SQL sorguları yaparken size birçok kolaylık sağlar. Bu modül, veritabanı bağlantılarını yapılandırmaya, bir veritabanı üzerinde sorgular yapmaya, verileri ekleme, güncelleme veya silme işlemleri yapmaya ve tabloları oluşturup silmeye izin verir. Knex.js, tamamen Node.js'e entegre edilmiş bir yapıya sahiptir ve bu sayede veritabanı işlemlerini uygulama seviyesinde geliştirebilmenizi sağlar. Ayrıca, Knex.js ve Hapi.js bir arada kullanılarak RESTful API'ların daha hızlı ve güvenilir bir şekilde oluşturulması mümkündür.
Knex.js, veritabanı sorgularınızdaki en yaygın kullanılan fonksiyonların hepsini içerir. Bunlar "SELECT", "INSERT", "DELETE", ve "UPDATE" gibi sorgular içerebilir ve aynı zamanda sorgularınızın daha karmaşık hale gelmesiyle birlikte "JOIN" ve "ORDER BY" gibi fonksiyonları da içerebilir. Bu sayede, veritabanı işlemleri yapmak için SQL bilgisi olan herkes Knex.js’i kullanarak basit, verimli ve doğru işlemler yapabilir.
Knex.js, sunduğu avantajlar sayesinde Node.js programcılarının sıklıkla tercih ettikleri bir SQL yapıcısıdır. Knex.js’in sunduğu özellikler arasında sorguları kolaylaştırma ve daha güvenilir veritabanı bağlantısı sağlama bulunur. Bu nedenle, Knex.js'in kullanımı, veritabanı işlemleri yaparken zaman ve kaynak tasarrufu sağlar.
Knex.js Nasıl Kurulur?
Knex.js, bir sorgu yapıcısı olup, veritabanı işlemleri için kullanılır. Kurulumu oldukça kolaydır. Knex.js, Node.js ortamında kullanılmak üzere geliştirilmiştir. Knex.js yüklemek için şu adımları takip edin:
- Projeyi başlatmak için bir klasör açın ve terminali açarak klasöre gidin.
- npm init komutunu çalıştırın. Bu sizin projenizi ayarlar ve package.json dosyasını oluşturur.
- npm install knex --save komutunu çalıştırarak Knex.js'i indirin ve projenize ekleyin.
- Database sürücüsünü indirin ve projenize ekleyin (örneğin, npm install pg --save komutunu kullanarak Postgres sürücüsünü indirin).
Knex.js ile veritabanı bağlantısının yapılandırılması, bağlantı ayrıntılarına göre değişebilir. Örneğin, Postgres veritabanına bağlanırken şu adımları takip edebilirsiniz:
- Projedeki knexfile.js dosyasını açın.
- Development bağlantısı için veritabanı bilgilerini yapın. Örneğin:
development: |
|
---|
- Bağlantı ayrıntılarınızı ekledikten sonra, komut satırında migrasyon dosyalarını oluşturun: npx knex migrate:latest
- Artık veritabanına bağlısınız ve sorgularınızı yapabilirsiniz.
Knex.js kurulumunu tamamladığınızda, veritabanı işlemleriniz için kullanmaya başlayabilirsiniz. Bu sorguları yapmak için Knex.js'in yöntemlerini öğrenmeniz yeterlidir.
Knex.js'te Bir Veritabanı Oluşturma
Knex.js, SQL sorgularınızı yönetmenize yardımcı olan bir sorgu yapıcısıdır. Bir veritabanı ve tabloları oluşturmak için Knex.js kullanmanın kolay bir yolu vardır.
Yeni bir veritabanı oluşturmak için, öncelikle projenize Knex.js'i yüklemeniz gerekir. Bunu yapmak için "npm install knex --save" komutunu kullanabilirsiniz. Daha sonra, bir veritabanı sürücüsü yüklemelisiniz. Örneğin, PostgreSQL kullanacaksanız, "npm install pg --save" komutunu kullanmanız gerekiyor.
Bir veritabanı oluşturmak için, bir migrasyon dosyası oluşturmanız ve Knex CLI aracılığıyla çalıştırmanız gerekir. Migrasyon dosyanızı "knex migrate:make
Dosyanın içinde, veritabanınızı oluşturma sorgularını yazmalısınız. Örneğin, PostgreSQL kullanıyorsanız, aşağıdaki gibi görünebilir:
Knex.js Migration Dosyası |
---|
exports.up = function(knex) { return knex.schema .createTable('users', function(table) { table.increments('id'); table.string('name'); table.string('email').unique(); table.timestamps(false, true); }) .createTable('posts', function(table) { table.increments('id'); table.string('title'); table.text('content'); table.integer('user_id') .unsigned() .notNullable() .references('id') .inTable('users') .onDelete('CASCADE'); table.timestamps(false, true); }); }; exports.down = function(knex) { return knex.schema .dropTableIfExists('posts') .dropTableIfExists('users'); }; |
Bu dosyada, kullanıcılar ve gönderiler için iki tablo oluşturduk. "up" fonksiyonu, tabloları oluşturmak için kullanılan sorguları içerir. "down" fonksiyonu ise tabloları kaldırmak için kullanılır.
Migration dosyanızı oluşturduktan sonra, Knex CLI aracılığıyla çalıştırabilirsiniz. Bunun için "knex migrate:latest" komutunu kullanabilirsiniz. Bu, migrasyon dosyanızdaki tüm sorguları yürütecek ve yeni tablolarınızı veritabanınızda oluşturacaktır.
Bu şekilde, Knex.js kullanarak kolayca yeni bir veritabanı oluşturabilirsiniz. Ayrıca, tablolarınıza da veritabanı migrasyonları aracılığıyla alanlar ekleyebilirsiniz.
Knex.js'te Veritabanı İşlemleri
Knex.js, SQL yapmak için kullanabileceğiniz bir sorgu yapıcısıdır. Knex.js ile bir veritabanına erişmek ve işlem yapmak oldukça kolaydır. Veritabanı işlemleri yapmak için Knex.js'te kullanabileceğiniz yöntemler vardır. Bunlar şunlardır:
- select(): Belirli bir tablodan sütunlara erişmek için kullanılır.
- insert(): Yeni bir kayıt eklemek için kullanılır.
- update(): Bir kaydı güncellemek için kullanılır.
- delete(): Bir kaydı silmek için kullanılır.
- orderBy(): Sorgu sonuçlarını belirli bir sütuna göre sıralamak için kullanılır.
- groupBy(): Sorgu sonuçlarını belirli bir sütuna göre gruplamak için kullanılır.
- where(): Belirli bir koşula göre sorgu sonuçlarını sınırlamak için kullanılır.
Knex.js kullanırken, SQL sorgularını doğrudan yazmak yerine, bu yöntemleri kullanarak sorgularınızı oluşturabilirsiniz. Bu, sorgularınızı daha okunaklı hale getirir ve hataları engeller.
Ayrıca, Knex.js'in işlevselliğini genişletmek için eklentiler de mevcuttur. Örneğin, Knex.js işlevselliğini GraphQL ile entegre etmek için graphql-knex adında bir eklenti mevcuttur.
Knex.js ile Veritabanı Sorguları
Knex.js, bir sorgu yapıcısı olduğu için SQL sorguları oluşturmak için kullanılabilir. Bu sayede SQL'i öğrenmenize gerek kalmadan, basit JavaScript syntax'ıyla sorgular yazabilirsiniz. Knex.js ile bir veritabanına bağlanıp, INSERT, UPDATE, DELETE ve SELECT gibi sorguların nasıl yapıldığını öğrenebilirsiniz.
SELECT sorguları yazarken, belirli bir tablodan, belirli sütunlar seçip, bunları filtreleyebilirsiniz. Ayrıca, JOIN gibi operasyonlar kullanarak tablolar arası ilişkileri de belirleyebilirsiniz. INSERT, UPDATE ve DELETE işlemleri için, doğru tabloyu seçip, belirli sütunlara veri ekleyebilir, güncelleyebilir veya silebilirsiniz. Knex.js'te işlemlerin nasıl yapıldığına dair örnek kodları inceleyerek, veritabanı sorguları hakkında daha fazla bilgi edinebilirsiniz.
Veritabanı İşlemleri İçin Knex.js ve Hapi.js Kullanımı
Hapi.js ve Knex.js, birbirleriyle entegre edilebilen iki araçtır ve birlikte kullanıldıklarında, RESTful API'ların bir veritabanıyla bağlantısını kurmak için oldukça güçlü bir araç seti sağlarlar.
Öncelikle, Knex.js kullanarak bir veritabanı bağlantısı oluşturun. Bağlantı yapılandırmasını ayarladıktan sonra, Hapi.js entegrasyonunu sağlamak için gerekli modülleri yükleyebilirsiniz.
Bir örnek senaryoda, Hapi.js kullanarak bir RESTful API'yi oluşturabilirsiniz. API, Knex.js kullanarak bir veritabanına bağlanacak ve işlem yapacak. Örnek kodlar şöyledir:
const knex = require('knex')(knexFile.development);const Hapi = require('@hapi/hapi');const Joi = require('joi');const server = new Hapi.Server({ port: 3000, host: 'localhost' });server.route({ method: 'GET', path: '/todos', handler: (request, h) => { return knex.from('todos').select('*') .then((rows) => { return rows; }) .catch((err) => { console.log(err); }); }});server.route({ method: 'POST', path: '/todos', handler: (request, h) => { const { title, description } = request.payload; const newTodo = { title, description }; return knex('todos').insert(newTodo) .then(() => { return h.response().code(201); }) .catch((err) => { console.log(err); }); }, options: { validate: { payload: Joi.object({ title: Joi.string().min(3).required(), description: Joi.string() }) } }});server.start();
Bu örnek kod, GET ve POST isteklerine yanıt vererek bir "todos" tablosuna kaydedilen verileri tutacaktır. Knex.js, tüm veritabanı işlemlerini kolaylaştırmak için kullanılırken, Joi, girdilerin doğru formatta ve değerlerde olmasını kontrol etmek için kullanılan bir doğrulama kütüphanesidir.
Yukarıdaki örnekte Hapi.js ve Knex.js kullanarak bir RESTful API'yı nasıl oluşturabileceğinizi görebilirsiniz. Bu, web uygulamalarınızın gerçek zamanlı güncellemeleri desteklemesini sağlar ve kullanıcının verileri hızlı bir şekilde işlemesini ve yönetmesini sağlar.