Nodejs'te veri doğrulama işlemleri için kullanılan Joi kütüphanesi, özelleştirilebilir ve genişletilebilir bir yapıya sahiptir Joi ile, verilerin doğruluğunu kontrol etmek için şablonlar oluşturulabilir ve hata yönetimi özelliği sayesinde oluşan hatalar kolayca yönetilebilir Ayrıca, dış kaynaklı şema kullanımı da mümkündür Joi, geliştiricilere veri doğrulama işlemlerini kolaylaştırmak için basit bir API sunar ve veri doğrulama işlemleri için zaman tasarrufu sağlar
Node.js, web uygulamalarının geliştirilmesinde sıkça kullanılan bir platformdur. Ancak bu platform üzerinde çalışan uygulamaların verilerinin doğru bir şekilde işlenmesi ve saklanması da oldukça önemlidir. Bu nedenle Node.js'te, veri doğrulama işlemi, geliştiricilerin en önemli konularından biridir.
Joi, Node.js'te kullanabileceğiniz bir veri doğrulama kütüphanesidir. Joi, bu doğrulama işlemini basit bir API ile kullanıcılarına sunar. Joi kütüphanesi, ayrıca özelleştirilebilir ve genişletilebilir bir yapıya sahiptir, bu sayede kullanıcıların ihtiyaçlarına göre uyarlanabilir. Bu makalede, Joi kütüphanesinin özellikleri ve kullanımı hakkında daha fazla bilgi edineceksiniz.
Joi Nedir?
Node.js'te veri doğrulama işlemi oldukça önemlidir. Joi, Node.js'te veri doğrulama işlemi yapabilmek için kullanılan açık kaynak kodlu bir kütüphanedir. Bu kütüphane sayesinde veri doğrulama işlemi hızlı ve kolay bir şekilde gerçekleştirilebilir. Joi, özelleştirilebilir ve genişletilebilir bir yapıya sahiptir. Basit bir API'ye sahiptir ve veri doğrulama işlemini kolay hale getirir. Joi, şema yapısını kullanarak veri doğrulama işlemini gerçekleştirir. Joi şablon oluşturma, özelleştirme, genişletme ve uyarlamaya izin verir. Bu sayede kullanıcılara daha iyi bir geliştirme deneyimi sunar.
Joi'nin Özellikleri
Joi, kullanımı kolay bir API'ye sahiptir. Veri doğrulama işlemi için bir şema oluşturulması yoluyla verinin türü ve doğrulama gereksinimleri belirlenebilir. Joi'nin basit API'si sayesinde, karmaşık kodlar yazmak yerine, veri doğrulama işlemini kolayca yapabilirsiniz.
Örneğin, bir kullanıcının kaydolurken girmesi gereken bir form düşünelim. Joi ile, bu formda girilmesi gereken verilerin doğruluğunu kontrol etmek için bir şema oluşturulabilir. Bu şema, form verilerinin doğruluğunu kontrol etmek için kullanılabilir.
Joi ile veri doğrulama için basit bir örnek verelim:
```const Joi = require('joi');
const schema = Joi.object({ name: Joi.string().required(), age: Joi.number().required(), email: Joi.string().email().required(), password: Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')).required(),});
const result = schema.validate({ name: 'John Doe', age: 30, email: 'johndoe@example.com', password: 'password123',});
console.log(result);```
Yukarıdaki örnekte, Joi ile bir şema oluşturduk. Bu şema, name, age, email ve password alanlarındaki verilerin doğruluğunu kontrol eder. Ardından schema.validate() methodu kullanılarak bu şema doğrulandı ve sonuçlar konsol çıktısı olarak gösterildi.
Bu sayede, veri doğrulama işlemi Joi kullanılarak kolayca gerçekleştirilebilir.
Özelleştirilebilir
Joi, özelleştirilebilir yapısı sayesinde kullanıcılara daha iyi bir geliştirme deneyimi sunar. Joi ile, şablon oluşturma, özelleştirme, genişletme ve uyarlamaya izin verir. Joi şemaları, belirtilen davranışları tanımlayan kurallardan oluşur. Bu kurallar, verilerin doğruluğunu kontrol etmek için kullanılır.
Joi şablonları, istenen veri türleri ve doğrulama kuralları ile oluşturulur. Joi, kolay anlaşılabilir bir API kullanarak bu işlemi gerçekleştirir. Örneğin, bir şema oluşturmak için aşağıdaki kodu kullanabilirsiniz:
Alan | Kural |
---|---|
username | string | alphanum | min(3) | max(30) | required |
password | string | pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')) | required |
repeat_password | ref('password') |
string | email({ minDomainSegments: 2, tlds: { allow: ['com', 'net'] } }) |
- Joi ile oluşturulan şemalar, isteğe bağlı olarak özelleştirilebilir.
- Joi ile şablonlar genişletilebilir veya uyarlanabilir.
- Joi, diğer açık kaynaklı proje ve kütüphanelerle entegre olmak için dış kaynaklı şemalar kullanma özelliği sunar.
Sonuç olarak, Joi özelleştirilebilir bir kütüphanedir ve geliştiricilere geniş bir yelpazede seçenekler sunar. Özelleştirme seçenekleri sayesinde kullanıcılar, verileri doğrulama işlemini ihtiyaçlarına uygun şekilde özelleştirebilirler.
Hata Yönetimi
Joi, veri doğrulama işlemi sırasında oluşan hataları yönetme özelliğine sahiptir. Bu özellik sayesinde, verinin belirtilen şemaya uygun olmadığı durumlarda bir hata mesajı alınabilir. Joi'nin hata yönetimi özelliği, geliştiricilere daha kolay hataları ayıklama ve giderme fırsatı sunar.
Ayrıca, Joi hata mesajlarını özelleştirme seçeneği de sunar. Hata mesajlarını isteğe göre özelleştirerek, kullanıcıların anlaması ve hataların daha hızlı bir şekilde çözülebilmesi sağlanır.
Hata Türü | Açıklama |
---|---|
ValidationError | Veri şemaya uygun değilse bu hatayı verir. |
versionError | Belirtilen şema versiyonu uygun değilse bu hatayı verir. |
ChildValidation Error | Array veya Object tipindeki verileri doğrularken bir hata oluşursa bu hatayı verir. |
Bu hata tipleri, Joi ile ilgili geliştirmede kullanılabilecek örnektir. Joi, geliştiricilere hataları kolayca tespit etme ve yönetme fırsatı sunar. Bu özellik sayesinde, geliştirme sürecinde zaman tasarrufu sağlayarak, daha hızlı ve verimli bir şekilde uygulama geliştirebilirsiniz.
Dış Kaynaklı Şemalar
Joi, dış kaynaklı şemalar kullanarak farklı kaynaklardan gelen verileri doğrulayabilir. Önceden tanımlanmış Joi şemalarını kullanarak, diğer açık kaynak kodlu proje ve kütüphanelere entegre olmak çok daha kolay hale gelir. Böylelikle, farklı kaynaklardan gelen verilerin doğruluğunu kontrol etmek için her seferinde yeni bir şema oluşturmak yerine, önceden tanımlanmış Joi şemalarını kullanarak veri doğrulamayı hızlı ve kolay bir şekilde gerçekleştirebilirsiniz.
Dış kaynaklı şemalar sayesinde, farklı projelerin birbirleriyle iletişim kurmasını kolaylaştırarak, veri doğrulama işlemini standart hale getirir ve geliştiricilerin veri doğrulaması işlemlerini kolaylaştırmış olur. Bu sayede, farklı projelerin veri işleme süreçleri standartlaştırılabildiği gibi, geliştirme süreçlerinde de zaman ve emek tasarrufu sağlanır.
Joi Nasıl Kullanılır?
Joi kütüphanesini kullanabilmek için öncelikle kurulum işlemini gerçekleştirmeniz gerekiyor. Kurulum işlemi çok basittir. Node.js paket yöneticisi olan npm üzerinden Joi'yi kurmanız yeterli olacaktır. Komut satırına 'npm install joi' yazarak kurulum işlemini gerçekleştirebilirsiniz. Joi kütüphanesi, artık projenizde kullanıma hazır. Şimdi, Joi'yi kullanarak basit bir doğrulama örneği oluşturabilirsiniz.
npm install joiJoi, Node.js projelerinde kullanılmak üzere npm aracılığıyla yüklenir. Yüklemek için yapmanız gereken şey, komut satırında aşağıdaki kodu yazmaktır:
npm install joi
npm install joi kodu, Joi kütüphanesini Node.js projesine eklemek için gerekli tüm paketleri indirir.
yazarak kurulum gerçekleştirilebilir.Joi kurulumu npm ile gerçekleştirilir. Komut satırında `npm install joi` yazarak kurulum gerçekleştirilebilir. Kurulum yapıldıktan sonra `require` methodu ile Joi'yi projeye dahil edebiliriz.
Temel Joi Doğrulama Örneği
Joi ile basit bir doğrulama örneği aşağıdaki gibidir:
Kod | Açıklama |
---|---|
const Joi = require('joi'); | Joi kütüphanesi projeye dahil edilir. |
const schema = Joi.object({ | Aşağıdaki doğrulama şemasını oluşturmak için kullanılan kod. |
const validationResult = schema.validate({ | Şema oluşturulduktan sonra, verilerin doğruluğunu kontrol etmek için kullanılan kod. |
console.log(validationResult) | Doğrulama sonucunu konsola yazdırmak için kullanılan kod. |
Yukarıdaki örnekte, `validate` methodu veri doğrulama işlemini gerçekleştirdi ve sonucu konsola yazdırdı. Kullanılan şema, `username`, `password`, `repeat_password` ve `email` olmak üzere dört alandan oluşmaktadır. Bu alanlar, `required` ve `min` gibi kısıtlamalarla birlikte tanımlanmıştır.
```Temel Joi Doğrulama Örneği```Joi kütüphanesi kullanarak veri doğrulama örneği oluşturabilirsiniz. Aşağıdaki örnekte, kullanıcı adı, şifre, şifre tekrarı ve e-posta alanlarının nasıl doğrulandığına dair bir örnek verilmiştir. Joi ile kolay bir şekilde veri doğrulama yapabilirsiniz. Veriler türlerine göre kontrol edilir ve belirlenen şemaya uymayan veriler kabul edilmez.
```Örnek:
const Joi = require('joi');const schema = Joi.object({ username: Joi.string() .alphanum() .min(3) .max(30) .required(), password: Joi.string() .pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')) .required(), repeat_password: Joi.ref('password'), email: Joi.string() .email({ minDomainSegments: 2, tlds: { allow: ['com', 'net'] } })})const validationResult = schema.validate({ username: 'mete', password: '123456', repeat_password: '123456',email: 'example@com.net' });console.log(validationResult)
Yukarıdaki örnekte, Joi ile bir şema oluşturduk. Kullanıcı adı alanı için, en az 3 ve en fazla 30 karakter içeren bir alfanümerik dize gereklidir. Şifre alanı için, en az 3 ve en fazla 30 karakter içeren, yalnızca alfanümerik karakterlerden oluşan bir dize gereklidir. Şifre alanı tekrarı, şifre alanıyla aynı olmalıdır. E-posta alanı, en az iki alan bölümüne ve com veya net gibi belirtilen TLD uzantılarına sahip bir e-posta adresi olması gerekir. Ardından, `validate` yöntemini kullanarak belirtilen verileri doğruladık.
const JoiJoi kütüphanesini kullanmak için öncelikle kodumuzu Joi kütüphanesi ile bağlamamız gerekir. Bu işlem için, Node.js paket yöneticisi olan npm üzerinden Joi kütüphanesini kodumuza dahil ediyoruz.
Bu amaçla, aşağıdaki kod satırını kullanabilirsiniz:
npm install joi |
Bu kodun çalıştırılması ile Joi kütüphanesi projemize eklenecektir. Kodumuzda Joi kütüphanesi kullanabilmek için de projemizde Joi kütüphanesi ile iletişim kurmamız gerekmektedir. Bunun için, aşağıdaki kod satırını kullanabiliriz:
const Joi = require('joi');
Bu kod satırı, projemizde Joi kütüphanesi ile iletişim kurmamızı sağlar. Böylece, Joi kütüphanesini kullanarak veri doğrulama işlemini gerçekleştirebiliriz.
const schemaVeri doğrulama, web uygulamaları geliştirenlerin en önemli konularından biridir. Node.js'te veri doğrulama işlemini kolaylaştırmak için birçok kütüphane kullanılabilir. Bunlardan biri de Joi'dir. Joi, Node.js'te veri doğrulama işlemi yaparken kullanabileceğiniz açık kaynaklı bir kütüphanedir.
Joi kullanarak bir veri doğrulama şeması oluşturmak oldukça kolaydır. `Joi.object()` methodu kullanılarak bir şema oluşturulur. Parametre olarak verilen obje, doğrulanacak alanların adını içerir.
Alan Adı | Açıklama |
---|---|
username | Geçerli bir kullanıcı adı olmalıdır |
password | Geçerli bir şifre olmalıdır |
repeat_password | Şifrenin tekrarı ile aynı olmalıdır |
Geçerli bir e-posta adresi olmalıdır |
Bu alan adları, `Joi.string()` methodu kullanılarak tanımlanabilir. Ardından hangi doğrulama gereksinimlerinin belirleneceği belirtilebilir. Örneğin, `username` alanı için `Joi.string().alphanum().min(3).max(30).required()` metodunu kullanarak kullanıcı adının, en az 3 karakterden ve en fazla 30 karakterden oluşması gerektiğini ve alfanumerik karakterlerden oluştuğunu belirtebilirsiniz.
- 'alphanum()' metodu, alanın yalnızca harf ve rakamlardan oluşabileceğini belirtir.
- 'min()' ve 'max()' metodları, alanın minimum ve maksimum karakter sayısını belirler.
- 'required()' metodu, alanın zorunlu olmasını belirtir.
Benzer şekilde, `password` ve `email` alanları için de gerekli doğrulama gereksinimleri belirtilebilir. `repeat_password` alanı için ise `Joi.ref('password')` metodu kullanarak şifre ile aynı olması gerektiğini belirtebilirsiniz.
Böylece, `const schema = Joi.object({})` kodu kullanılarak bir Joi şeması oluşturulabilir.
username: Joi.string()`Joi.string()` methodu, bir kullanıcı adının bir dize olması gerektiğini belirtir. `alphanum()` methodu, yalnızca harf ve sayıların kullanılmasına izin verir. `min()` methodu, kullanıcı adının minimum kaç karakter içermesi gerektiğini belirtir. `max()` methodu ise maksimum kaç karakter içermesi gerektiğini belirtir. `required()` methodu, kullanıcı adının boş bırakılamayacağını belirtir. Kullanıcı adı için belirlenen bu doğrulama kuralları, schema oluşturulurken kullanılan parametreler arasında yer almaktadır.
.alphanum().alphanum() Joi özelliği, verinin yalnızca alfanümerik karakterler içermesi gerektiğini belirtir. Bu özellik, örneğin kullanıcı adı veya şifre gibi öğelerin doğrulanmasında özellikle yararlıdır. Bu özellik sayesinde, veri içerisinde özel karakterlerin yer almaması sağlanır ve doğruluk kontrolü daha güvenilir hale gelir.
.min(3).min(3) Joi kütüphanesinde bir şemanın en az 3 karakter uzunluğunda olması gerektiğini belirten bir yöntemdir. Örneğin, bir kullanıcı adının en az 3 karakter uzunluğunda olması gerekiyorsa, Joi'nin .min(3) yöntemi kullanılabilir:
Örnek: | Parametre: | Açıklama: |
---|---|---|
Joi.string().min(3) | 3 | Kullanıcı adının en az 3 karakter uzunluğunda olması gerektiğini belirtir. |
- .min(3) yöntemi, .max() yöntemiyle birlikte kullanılabilir. Bu durumda şema, belirtilen aralıkta karakter sayısı içerebilir.
Bu Joi şema metodu, verinin maximum karakter sayısını belirler. Yukarıdaki örnekte, `username` alanı için en fazla 30 karakter olması gerektiğini belirlemek için kullanılmıştır. Eğer `username` alanı 30 karakterden fazla girilirse, Joi `validate` methodunu kullanarak oluşan hata mesajını döndürecektir. Bu özellik sayesinde, kullanıcı girişlerinin belirli bir sınırı aşmaması sağlanır ve uygulamanın güvenliği artar. .max(30) metodu, diğer Joi şema metodları gibi özelleştirilebilir bir yapıya sahiptir ve uygulamanın ihtiyacına göre değiştirilebilir.
.required(),Joi kütüphanesi, verilerin doğruluğunu kontrol etmek için dikkate alınması gereken birçok özellik sunar. `.required()` metodu ise verilerin olmazsa olmaz olduğu durumlarda kullanılır. `.required()` metodu, bir veri alanının boş ya da geçersiz bir değer içeriyorsa, veri doğrulama hatası üretir.
Örneğin, bir kullanıcının adını ve şifresini girdiği bir form oluşturduğumuzu varsayalım. Bu verilerin her ikisi de girilmeden form gönderildiğinde, veri doğrulama hatası oluşur ve kullanıcıya ilgili alanların doldurulması gerektiği bildirilir.
`.required()` metodu, veri alanlarının boş olması durumunda hata oluşmasını engeller ve kullanıcının veri girişindeki eksiklikleri fark etmesine yardımcı olur.
Aşağıdaki örnek, `.required()` metodunun kullanımını göstermektedir:
```const Joi = require('joi');
const schema = Joi.object({ username: Joi.string() .alphanum() .min(3) .max(30) .required(), password: Joi.string() .pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')) .required(),});
const validationResult = schema.validate({ username: 'Mete', password: '123456' });console.log(validationResult);```
Yukarıdaki örnekte, `.required()` metodu kullanarak, `username` ve `password` veri alanlarının girilmesi zorunlu hale getirilmiştir. Bu sayede, kullanıcının form göndermeden önce eksik alanlarını tamamlaması gerektiği bildirilmesi sağlanır.
password: Joi.string()Joi, password alanının doğrulanmasında kullanılacak birçok yöntem sağlar. Joi.string() methodu, password alanındaki değerin bir dize olması gerektiğini kontrol eder. Ayrıca, password'un belirli bir uzunlukta olması veya belirli bir deseni izlemesi gerekiyorsa Joi, bu doğrulama işlemlerini yapabilmek için gerekli yöntemleri sağlar. Örneğin, .min() methodu minimum uzunluğu belirlerken, .max() methodu maksimum uzunluğu belirler. Password alanı zorunlu olduğu için, .required() methodu ile password alanına bir değer girilmediğinde hata mesajı gösterir.