Bu eğitim, Nodejs ve MongoDB kullanarak web uygulamaları geliştirmek isteyenler için tasarlanmıştır Kabul edilen en iyi uygulamaları öğrenerek, sıfırdan uygulama geliştirme becerilerinizi geliştirebilirsiniz
Bu makalede, Node.js ve MongoDB kullanarak sıfırdan bir uygulama geliştirme adımları ele alınacaktır. Node.js, açık kaynak kodlu bir çalışma ortamıdır ve JavaScript kodlarının çalışmasına imkan sağlar. MongoDB ise açık kaynaklı, belge tabanlı bir veritabanıdır ve JSON formatında belgelere dayalı bir yapısı vardır. Bu iki teknolojinin birlikte kullanımı ile verimli ve kullanışlı uygulamalar geliştirilebilir.
Uygulama geliştirme adımları, proje oluşturma, Node.js ve MongoDB entegrasyonu, model tanımlama, CRUD işlemleri, sunucu tarafı doğrulama, kullanıcı kaydı ve girişi ve istemci tarafı doğrulama aşamalarını içerir. Mongoose adlı bir ORM aracılığıyla Node.js ve MongoDB entegrasyonu sağlanır. Model tanımlama, verilerin MongoDB veritabanında saklanmasından sorumlu veri işleme katmanının tanımlanmasıdır. CRUD işlemleri, veri kaynağı üzerinde yapılan dört temel işlem olan create, read, update ve delete işlemlerini ifade eder.
Sunucu tarafı doğrulama, kullanıcının kimlik bilgilerini doğrulamak için sunucunun kullanıldığı bir kimlik doğrulama yöntemidir. Bu adımda JSON Web Token (JWT) isimli web tokenizasyon standardı kullanılabilir. Kullanıcı kaydı ve girişi için değişik adımlar izlenir. İstemci tarafı doğrulama, uygulama kullanıcılarının kimlik bilgilerini doğrulamak için istemcinin kullanıldığı bir kimlik doğrulama yöntemidir ve bu amaçla Passport adlı bir kimlik doğrulama aracı kullanılabilir.
Node.js Nedir?
Node.js, JavaScript kodlarının çalıştırılabilmesi için hazırlanmış bir açık kaynaklı bir çalışma zamanı ortamıdır. Bu platform, Google'ın V8 JavaScript motorunu kullanarak sunucu tarafında kodların çalışmasını sağlar. Node.js, özellikle etkileşimli ve yoğun veri işleme gerektiren web uygulamaları için uygun bir ortam sağlar.
Node.js, JavaScript dilini kullanarak sunucu tarafı uygulamaları geliştirmek isteyen yazılımcılar için oldukça yararlı bir platformdur. Bu nedenle, son yıllarda web uygulamaları geliştirmek isteyen birçok geliştirici tarafından tercih edilmektedir. Node.js'in çıktığı günden bu yana, JavaScript'in web uygulamaları için çok daha güçlü bir programlama dili haline gelmesine neden oldu.
MongoDB Nedir?
MongoDB, açık kaynaklı bir belge tabanlı veritabanı sistemidir. Veriyi belge şeklinde saklar ve JSON'a benzer bir veri yapısına sahiptir. İlişkisel veritabanlarından farklı olarak, bütün veriler JSON benzeri bir döküman olarak saklanır.
MongoDB, diğer veritabanı sistemlerinden farklı olarak daha esnek bir yapıya sahiptir. Ayrıca verilerin hızlı bir şekilde yazılmasını ve okunmasını sağlar, bu yüzden büyük ölçekli uygulamalarda da tercih edilir. Veritabanı işlemleri için kullanılan sorgulama dili ise MongoDB Query Language (MQL) olarak adlandırılmaktadır.
Node.js ve MongoDB Nasıl Entegre Edilir?
Node.js ve MongoDB entegrasyonu oldukça kolaydır. Bunun için kullanabileceğiniz en iyi yöntem Mongoose adlı bir ORM aracılığıyla entegrasyondur. Mongoose, MongoDB için gömülü nesne belge modellemesi (ODM) kütüphanesidir.
Mongoose'u yüklemek için, projenizin kök klasöründe terminalde npm install mongoose
komutunu çalıştırmanız yeterlidir. Bu işlem, Mongoose paketinin indirilmesini ve yüklenebilir hale getirilmesini sağlar.
Adım | Açıklama |
---|---|
1 | Projelerinizin kök klasörüne geçin. |
2 | Terminal açarak npm install mongoose komutunu çalıştırın. |
3 | Mongoose'un indirilip yüklendiğini onaylamak için MongoDB veritabanı bağlantınızı dosyanıza ekleyin. |
Mongoose, veritabanına bağlantı için mongoose.connect()
yöntemini kullanır. Bağlantı URL'sini bu yöntemde belirtmeniz gerekir. Ayrıca, MongoDB için eklenmesi gereken sunucu ve veritabanı seçenekleri de belirtilmelidir.
- Bağlantı URL'si örneği:
mongodb://localhost:27017/mydatabase
- Sunucu ve veritabanı seçenekleri örneği:
{ useNewUrlParser: true, useUnifiedTopology: true }
Bu ayarlamaların tamamlanmasının ardından, mongoose.connect()
yöntemi kullanılarak MongoDB veritabanına bağlantı sağlanabilir. Artık uygulamanızda Node.js ve MongoDB entegrasyonu tamamlanmıştır.
Mongoose Nedir?
Mongoose, açık kaynak kodlu bir Node.js kütüphanesi olarak MongoDB veritabanının yönetimini daha da kolaylaştıran bir araçtır. MongoDB'de belgelerin nasıl saklanacağına ve sunulacağına karar vermek için çoğu kez şemalar kullanılır. Bu şemalar, Mongoose ile tanımlanabilir. Mongoose, şemaların oluşturulmasını ve oluşturulmuş olan şemaların MongoDB'yi kullanarak doğrudan veritabanına yazılmasını sağlar.
Bunun yanı sıra, Mongoose'nin özelliklerinden biri olan middleware, belgelerin bir işlem öncesi ve sonrası için belirli bir kod bloğundan geçmesini sağlar. Ayrıca, Mongoose ayrıca veritabanındaki verilerin manipüle edilmesi için gerekli CRUD işlemlerini de kolaylaştırır. Sorgulama yöntemleri gibi detaylı işlemler kolayca yapılabildiği için Mongoose, MongoDB veritabanını kullanırken olağanüstü bir kullanıcı deneyimi sunar.
Mongoose Kurulumu
Mongoose kurulumu oldukça kolaydır ve yalnızca birkaç adımdan oluşur. Öncelikle, projenizin kök klasöründe terminali açın ve aşağıdaki komutu çalıştırın:
npm install mongoose
Bu komut, Node.js projesi için Mongoose'un en son sürümünü yükler. Mongoose'u yükledikten sonra, projenizde MongoDB veritabanı ile etkileşim kurmak için kullanabilirsiniz.
npm install mongooseMongoose, bir ORM aracılığıyla Node.js ve MongoDB entegrasyonunu sağlar. Mongoose'u yüklemek için projenizin kök klasöründe terminalde npm install mongoose
komutunu çalıştırmanız yeterlidir. Bu komut, projenize Mongoose kurulumunu ve bağımlılıklarının yüklenmesini sağlar.
Mongoose kurulumundan sonra, projenizde Mongoose şemasını ve modellini kullanarak verilerinizi MongoDB’de saklayabilirsiniz.
komutunu çalıştırın.Mongoose kullanarak Node.js ve MongoDB'yi entegre etmek için öncelikle Mongoose'u yüklememiz gerekiyor. Bu adımı gerçekleştirmek için projenizin kök klasöründe terminalde npm install mongoose
komutunu çalıştırın.
Bu, mongoose kütüphanesinin Node.js projenize yüklenmesini sağlayacaktır. Böylece Mongoose'un fonksiyonlarını kullanarak MongoDB'ye erişebilirsiniz.
Uygulama Geliştirme Adımları
Node.js ve MongoDB kullanılarak bir uygulama geliştirmek için belirli adımların izlenmesi gerekmektedir. Bu adımlar, uygulamanın başarılı bir şekilde geliştirilmesi için oldukça önemlidir.
Uygulama geliştirme adımları şunları içermektedir:
- Proje Oluşturma: Uygulama geliştirmede ilk adım, uygun bir proje oluşturmaktır. Bu adım, proje klasörünün oluşturulmasını ve paket.json dosyasının hazırlanmasını içermektedir.
- Node.js ve MongoDB Entegrasyonu: Node.js ve MongoDB arasında entegrasyon sağlanması gerekmektedir. Mongoose adlı ODM aracılığıyla entegrasyon işlemi gerçekleştirilir.
- Model Tanımlama: Model tanımlama, verilerin MongoDB'de saklanmasından sorumlu olan veri işleme katmanının tanımlanmasıdır. Bu adım, model dosyasının oluşturulmasını ve şemaların tanımlanmasını içermektedir.
- CRUD İşlemleri: CRUD, create, read, update ve delete işlemlerini ifade eder. Bu işlemler, veri kaynakları üzerinde yapılan temel işlemlerdir ve işlevsellik açısından oldukça önemlidir.
- Sunucu Tarafı Doğrulama: Kullanıcının kimlik bilgilerini doğrulamak için sunucunun kullanıldığı bir kimlik doğrulama yöntemidir. Bu adım, sunucu tarafı doğrulama yönteminin uygulanmasını içermektedir.
- Kullanıcı Kaydı ve Girişi: Kullanıcıların kayıt olabileceği ve giriş yapabileceği bir işlevsellik eklemek, web uygulamaları için oldukça önemlidir. Bu adım, kullanıcı kayıt ve giriş işlevselliklerinin uygulanmasını içermektedir.
- İstemci Tarafı Doğrulama: İstemci tarafı doğrulama, kullanıcıların kimlik bilgilerini doğrulamak için istemcinin kullanıldığı bir kimlik doğrulama yöntemidir. Bu adım, istemci tarafı doğrulama yönteminin uygulanmasını içermektedir.
Bu adımların başarılı bir şekilde tamamlanması, bir Node.js ve MongoDB uygulamasının geliştirilmesi için gereklidir. Ayrıca, her adımın detaylı bir şekilde anlaşılması, uygulamanın başarılı bir şekilde geliştirilmesi için oldukça önemlidir.
Model Tanımlama
Model tanımlama, Node.js ve MongoDB ile uygulama geliştirirken oldukça önemli bir adımdır. Bu adım, verilerin MongoDB'de saklanmasından sorumlu olan veri işleme katmanının (data access layer) tanımlanmasıdır. Model tanımlama işlemi, Mongoose aracılığıyla yapılmaktadır. Model, MongoDB veritabanındaki bir belge türünü temsil eder ve MongoDB'nin şema yapısını JavaScript nesnelerine dönüştürür. Bu, veritabanındaki belgelerin daha kolay yönetilmesini, güncellenmesini ve ölçeklendirilmesini sağlar.
Model tanımlama adımı, veritabanından veri alma, veri güncelleme, yeni veri ekleme ve veri silme işlemlerini gerçekleştirmemize olanak tanır. Bunun yanı sıra, belirli bir veri kümesindeki belgeleri tanımlayarak, farklı koleksiyonlar arasında dolaşmamıza ve verileri daha iyi organize etmemize yardımcı olur. Model tanımlama işlemi, ayrıca CRUD (create, read, update, delete) işlemlerinin gerçekleştirilmesi için de gereklidir. Mongoose aracılığıyla model tanımlamak oldukça kolaydır. Bir model tanımlamak için önce bir Mongoose şeması oluşturulur, ardından bu şema bir modele dönüştürülür.
CRUD İşlemleri
CRUD işlemleri, bir programlama dilinde veri tabanı üzerinde yapılan 4 temel işlem olan create, read, update ve delete işlemlerini ifade eder. Bu işlemler, kullanıcı tarafından verileri yönetmek için kullanılır ve uygulama geliştirme sürecinde oldukça önemlidir.
Bir uygulama geliştirirken, CRUD ile ilgili işlemleri yapmanız gerekir. Örneğin, bir kullanıcı hesabı oluşturmak istediğinizde, "create" yani veri oluşturma işlemi gerçekleştirilir. Kullanıcının hesap bilgilerini görüntülemek istediğimizde, "read" yani veri okuma işlemi yapılır.
CRUD İşlemi | Açıklama |
---|---|
Create | Veri oluşturma işlemi |
Read | Veri okuma işlemi |
Update | Veri güncelleme işlemi |
Delete | Veri silme işlemi |
CRUD işlemleri, bir uygulama geliştirilirken en sık kullanılan işlemlerdir. Bu işlemler, uygulamada kullanılan veri şemasına ve gereksinimlerine göre yapılandırılabilir. Node.js ve MongoDB kullanarak uygulama geliştiriyorsanız, Mongoose ORM (Nesne İlişkisel Eşleme) aracılığıyla CRUD işlemlerini gerçekleştirebilirsiniz.
Sunucu Tarafı Doğrulama
Sunucu tarafı doğrulama, güvenliği artırmak için son kullanıcı kimlik bilgilerini doğrulamak için bir kimlik doğrulama yöntemidir. Bu yöntemde, kullanıcı adı ve şifre sunucuya gönderilir ve sunucu, bu bilgilerin doğruluğunu kontrol ederek kullanıcıya erişim izni sağlar.
Bununla birlikte, şifreleri saklamak için güvenilir bir yöntem kullanmak önemlidir. Şifreleri açık bir şekilde saklamak yerine, şifreleri hashlemek ve tuzlama (salt) yöntemi kullanmak daha güvenlidir. Hashleme, şifreyi benzersiz bir dizi haline getirir ve tuzlama, her kullanıcı için farklı bir tuz kullanarak saldırganların şifreyi tahmin etmelerini zorlaştırır.
Bir diğer önemli husus ise, sunucu tarafında kullanıcıları izlemek ve kimlik doğrulamanın sürekliliğini sağlamaktır. Kullanıcılar oturum açtıktan sonra, sunucu kullanıcıya bir token verir ve her istek için bu token kullanılır. Böylece, kullanıcının oturumu sürekliliği sağlanır ve oturum açık kaldığı sürece kullanıcının kimlik bilgileri doğrulanır.
Bunun yanı sıra, sunucu tarafında kullanılan kimlik doğrulama yöntemi standart hale getirilmiştir. JSON Web Token (JWT) gibi standartlar, farklı platformlar arasında kimlik doğrulama yönteminin ortaklaştırılmasını sağlar. JWT, açık bir standarttır ve çeşitli diller ve platformlar tarafından desteklenir.
Sunucu tarafı doğrulama yöntemi, uygulamaların güvenliğini artırmak için son derece önemlidir ve Node.js ve MongoDB ile entegre bir şekilde kullanılabilmektedir.
JWT Nedir?
JWT, "JSON Web Token" kelimelerinin kısaltmasıdır. JWT, kullanıcı kimliğini doğrulamak için kullanılan ve açık bir standart olan bir web tokenizasyon yöntemidir. JWT, JSON tipinde veri iletilerini şifrelemek, kimlik doğrulama işlemleri ve erişim kontrolü gibi durumlarda kullanılabilir.
JWT token'ları üç kısma ayrılmıştır: Header (Başlık), Payload (Yük) ve Signature (İmza). Header şifrelemek için kullanılan algoritmayı, Payload kullanıcının kimliğini ve diğer ilgili bilgileri, Signature ise verinin bütünlüğünü korumak için kullanılan bir koddur. JWT, diğer kimlik doğrulama yöntemlerine göre daha az depolama alanı gerektirir ve farklı sistemler arasında kullanıcıların kimliklerini güvenli bir şekilde taşımak için uygundur.
Kullanıcı Kaydı ve Girişi
Node.js ve MongoDB kullanarak bir uygulama geliştirirken, kullanıcı kaydı ve girişi için bazı adımları takip etmek gerekmektedir. Kullanıcı kaydı yapabilmek için, öncelikle veritabanında bir kullanıcı modeli oluşturulmalıdır. Bu model içerisinde kullanıcının adı, soyadı, e-posta adresi ve şifresi gibi bilgiler yer almalıdır. Daha sonra, kullanıcının şifresi hash yapılarak veritabanına kaydedilmelidir. Böylece, kullanıcının şifresinin açık olarak saklanması engellenmiş olacaktır.
Kullanıcı kaydı işlemi tamamlandıktan sonra, kullanıcıların uygulamaya giriş yapmasına izin verilmelidir. Bunun için, öncelikle kullanıcının e-posta adresi ve şifresi kontrol edilmeli ve doğruysa uygulamaya giriş yapabilmesi için bir token oluşturulmalıdır. Token sayesinde kullanıcının oturumu açık kalırken, uygulama içerisinde gezinirken tekrar tekrar giriş yapmak zorunda kalmayacaktır.
Kullanıcı kaydı ve girişi işlemlerinde, doğrulama adımları atlanarak kullanıcıların uygulamaya erişimi sağlanmamalıdır. Ayrıca, şifrelerin açık olarak saklanması ve güvenliği sağlanmayan bir şekilde işlenmesi, uygulamanın güvenliği açısından risk oluşturmaktadır. Bu nedenle, kullanıcı kaydı ve girişi işlemlerinin dikkatli bir şekilde tasarlanması ve gerçekleştirilmesi gerekmektedir.
İstemci Tarafı Doğrulama
İstemci tarafı doğrulama, uygulama kullanıcılarının kimlik bilgilerini doğrulamak için istemcinin kullanıldığı bir kimlik doğrulama yöntemidir. Bu yöntem, kullanıcının kimlik bilgilerinin sunucu tarafından saklanmamasına ve kullanıcının kimlik bilgilerinin uygulamanın farklı sayfaları arasında gönderilmesine olanak tanır.
İstemci tarafı doğrulama için, Node.js ve MongoDB kullanarak bir uygulama geliştirirken, Passort adlı bir kimlik doğrulama aracı kullanılabilir. Passport, OAuth ve OpenID gibi tanınmış kimlik doğrulama protokollerini destekler ve uygulamanızda hem sunucu tarafı hem de istemci tarafı kimlik doğrulama işlemlerini kolayca gerçekleştirebilirsiniz.
Passport'ın kullanımı oldukça basittir. İlk olarak, Passport'ın Node.js uygulamanıza nasıl eklenir ve yapılandırılır, daha sonra kullanıcının kimlik bilgilerini doğrulamak için nasıl kullanılacağı anlatılır. Aşağıda, istemci tarafı doğrulama için kullanabileceğiniz Passport örnek kodunu görebilirsiniz:
// Passport'ı yükleconst passport = require('passport')const LocalStrategy = require('passport-local').Strategy // Kullanıcı modelinizi MongoDB ile tanımlayınconst User = require('./models/user') // Passport için LocalStrategy tanımlayınpassport.use(new LocalStrategy( function(username, password, done) { User.findOne({ username: username }, function (err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Kullanıcı adı yanlış.' }); } if (!user.validPassword(password)) { return done(null, false, { message: 'Şifre yanlış.' }); } return done(null, user); }); }));
Bu örnekte, Passport'ın LocalStrategy'si kullanarak, bir kullanıcının adı ve şifresi doğrulanır. Kullanıcı adı ve şifresi veritabanında saklanır ve doğrulama süreci kullanıcının girişi sırasında gerçekleştirilir.
İstemci tarafı doğrulama yöntemi, uygulamanızın güvenliğini artırırken, kullanıcılara daha iyi bir deneyim sunar. Bu yöntemle, uygulama kullanıcıları kimlik bilgilerini güvenle kullanabilir ve uygulama sahipleri de herhangi bir güvenlik açığına neden olmadan uygulamalarını geliştirebilirler.
Passport Nedir?
Passport, Node.js için geliştirilen bir kimlik doğrulama aracıdır. Yerleşik stratejileri sayesinde kullanıcı kaydı ve kimlik doğrulama gibi işlemleri kolayca gerçekleştirmeyi sağlayan Passport, uygulama geliştiricileri tarafından yaygın bir şekilde kullanılmaktadır.
Passport, birden fazla kimlik doğrulama yöntemi desteklemekte olup, Facebook, Twitter, Google ve GitHub gibi popüler kimlik doğrulama sağlayıcılarının yanı sıra, yerleşik kullanıcı adı ve parola ile kimlik doğrulama gibi temel işlemleri de desteklemektedir.
Kullanımı oldukça kolay olan Passport, projenize dahil etmek için öncelikle terminalden npm install passport
komutunu çalıştırarak modülü yüklemeniz gerekmektedir. Daha sonra, uygulamanızın ilgili dosyalarında Passport'un stratejilerini ve özelliklerini tanımlayarak kullanabilirsiniz.
Passport, Node.js ve MongoDB kullanarak geliştirdiğiniz web uygulamalarında güvenli ve kolay bir kimlik doğrulama sağlayarak, kullanıcı deneyimini önemli ölçüde artırmaktadır.