Node.JS Request Validation “Joi”

Ayberk Cakar
Innovile
Published in
2 min readJul 25, 2021

Herkese Selamlar :) Bu yazımda Node.JS için Request Validation’ı “Joi” ile nasıl sağlayabiliriz bunu inceleyeceğiz. Yazılım dünyasında, oluşturduğumuz web tabanlı uygulamaların güvenliğini sağlamak önemlidir çünkü kötü niyetli kişiler bizim bıraktığımız açıklardan yararlanarak sisteme zarar verebilir ve bizim verilerimizi elde edebilirler. Bu yüzden yazılımın güvenliğini en üst düzeyde tutmak gerekir.

Biz bu yazımızda Back-End tarafında gelen isteklerin , işlenmeden önce doğru format gelip gelmediğini Joi ile nasıl kontrol edebiliriz bunu inceleyeceğiz.

Node.JS Nedir ?

Node.JS , JavaScript ile server side ( sunucu tarafında çalışan uygulamalar ) ve ağ bağlantılı uygulamalar geliştirebileceğimiz bir Back-End teknolojisidir. V8 isimli bir javascript motoru üzerinde çalışır. JavaScript temelli olması sebebiyle dinamik ve hızlı bir yapısı mevcuttur. En önemli özelliği asenkron yapıda çalışması ve non-blocking olmasıdır.

JOI Nedir ?

Joi , JavaScript için şema hazırlayarak veri doğrulamayı sağlayan bir npm kütüphanesidir. Npm paketini indirmek için Npm Joi adresini , Joi’ye ait dökümantasyonları incelemek için joi.dev adresini ziyaret edebilirsiniz.

Auth Validator modülü altında login ve sign up için validation schema oluşturduk. Örneğimize göre;

  • string()
  • number()
  • date()
  • email()

vb veri tipleri vardır. Ayrıca ;

  • pattern( new RegExp(‘^[A-Za-zÇçÖöŞşÜüĞğİı ]+$’) )
  • min() ve max() ( string için uzunluk, number için sayı değeri )
  • ref() -> Password örneğinde olduğu gibi referans vermeyi sağlar.
  • valid() -> Parentez içerisinde verilen değerleri belirtilen veri içerisinde var mı diye kontrol eder.
  • required()

gibi özellikleri veriler için tanımlayabilirsiniz.

Not: Zorunlu alan ise required() şeklinde belirtmemiz gerekiyor, zorunlu alan değilse yinede schema içerisinde beklenen veriyi belirtmemiz gerekiyor sadece required() eklemiyoruz. Zorunlu değil diye eklememezlik yaparsak, hata verir.

Not: “ validateAsync(req.body) “ -> req.body olan kısım , bizim datayı bulundurduğumuz kısımdır. Siz kendinize göre değiştirebilirsiniz.

Yukarıda veri tipleri için örnek verdim, daha fazla örnek için joi.dev adresini inceleyebilirsiniz.

Router.js içerisinde örnekte göründüğü gibi Login için authValidator.login , Sign Up için authValidator.signUp olarak router methodlarımızda validation kontrolünü sağladık. Eğer gönderilen veriler hatalı ise status -> 417 ve message olarakta “ Must have correct data entry. ” hata mesajı dönecektir.

Joi ile bütün veri tipleri için istediğiniz şekilde Validation Schema hazırlayabilirsiniz. Dökümantasyon ve örnekler için joi.dev adresini ziyaret edebilirsiniz.

Yazımı okuduğunuz için teşekkür ederim :)

İyi günler , İyi çalışmalar 😊

--

--