Hakan GÜZEL

NodeJs MeteorJs Framework Nedir, Kullanımı ve RESTful API Yapımı

MeteorJs Nedir?

Modern web ve mobil uygulamalar geliştirmek için JavaScript platformudur.

· MeteorJs’de server ile client tek bir uygulamada geliştirilir. Bu nedenle kendisine full-stack JavaScript platform demekte.
· MeteorJs, tüm ortamları tek bir dilde yani Javascript’de geliştirmenize olanak sağlar. Bu sayede Web ve Mobil’i tek bir dilde geliştirmiş olursunuz.
· MeteorJs, data on the wire yöntemini kullanır. Yani sunucu HTML’i değil veriyi gönderir ve istemci ise oluşturur.
· MeteorJs ile gerçek zamanlı uygulamalar yapmak çok basit. Örneğin RocketChat uygulaması MeteorJs ile geliştirilmiştir. Tutorials’ların arasında Whatsapp Clone’u göreceksinizdir.
· MeteorJs Kendi içerisinde MongoDB barındırır. Veritabanı olarak MongoDB kullanacaksanız ek bir conf. gerektirmez.

Sistemsel Gereksinimler
 
MeteorJs
 Node
 Postman
 Chocolatey

MeteorJs Kurulumu

Öncelikle MeteorJs’i global olarak makinamıza yüklüyoruz. Terminalimizi açıp aşağıdaki kodu çalıştırıyoruz.

choco install meteor

Terminalimizden MeteorJs projesi oluşturuyoruz.

meteor create Meteor-RestFull-Api

Uygulamanın çalıştığını test etmek amacı ile Terminalimizde uygulamanın dizinine gidip uygulamamızı ayağa kaldırıyoruz.

cd Meteor-RestFull-Api
meteor

127.0.0.1:3000 adresine tarayıcı üzerinden girildiğinde aşağıdaki sayfa karşılayacaktır.

Eğitimimizde user modelinin CRUD işlemini yapacağız.

Öncelikle meteor’da rooter işlemleri için iron-router paketini kullanacağız. Bu paketi projemize dahil etmek için aşağıdaki kodu terminalimizde çalıştırıyoruz.

meteor add iron:router

Yazımızda Meteor.js Nedir? Kısmında bahsettiğimiz üzere klasör yapımıza baktıınızda client ve server dosyalarını göreceksiniz. Restfull servisler sunucu tarafında çalıştığı için kodlarımızı server klasörü altında main.js içerisine yazacağız.

Kullanacağımız methodlar aşağıdaki gibi olacak;

1- GET /users
2- POST /users
3- GET /users/:id
4- PUT /users/:id
5- DELETE /users/:id

Tablonun oluşturulması

Meteor.startup fonksiyonu içerisine aşağıdaki kodu yazıyoruz. Bu kod başlangıçta eğer yoksa MongoDB’de User adlı tablo oluşturur. Varsa veya oluşturduğunda User adlı değişkene bağlar.

Meteor.startup(() => {
User = new Meteor.Collection(‘user’);
});

1- GET /users

.get(function () {
var cevap = User.find().fetch();
this.response.setHeader(‘Content-Type’, ‘application/json’);
this.response.end(JSON.stringify(cevap));
})

Tüm kayıtları cevap değişkenimize atıyoruz. Sonrasında dönüş JSON formata dönüştürerek response nesnemize veriyoruz.

2- POST /users

.post(function () {
var cevap;
if (this.request.body.userName === undefined || this.request.body.userPassword === undefined) {
cevap = {
“error”: true,
“message”: “invalid data”
};
} else {
User.insert({
UserName: this.request.body.userName,
UserPassword: this.request.body.userPassword
});
cevap = {
“error”: false,
“message”: “User added.”
}
}
this.response.setHeader(‘Content-Type’, ‘application/json’);
this.response.end(JSON.stringify(cevap));
});

İsteğin body kısmında userName ve userPassword boş kontrolü yapıyoruz. Eğer boşsa “invalid data” cevabı dönüyoruz. Eğer içerikler dolu ise basit bir JSON ile database’e insert ediyoruz. Ekrana “User added “ cevabını dönüyoruz.

3- GET /users/:id

Router.route(‘/users/:id’, { where: ‘server’ })
// GET /users/:id — MongoDB her kayıt için bir _id değeri atar. Bu değeri göndererek ilgili kaydı görüntüleyebiliriz.
.get(function () {
var cevap;
if (this.params.id !== undefined) {
var data = User.find({ _id: this.params.id }).fetch();
if (data.length > 0) {
cevap = data
} else {
cevap = {
“error”: true,
“message”: “User not found.”
}
}
}
this.response.setHeader(‘Content-Type’, ‘application/json’);
this.response.end(JSON.stringify(cevap));
})
})

İd parametresi boş kontrolü yaptıktan sonra database’den id’yi bulup ekrana basıyoruz.

4- PUT /users/:id

.put(function () {
var cevap;
if (this.params.id !== undefined) {
var data = User.find({ _id: this.params.id }).fetch();
if (data.length > 0) {
if (User.update({ _id: data[0]._id }, { $set: { UserName: this.request.body.userName, UserPassword: this.request.body.userPassword } }) === 1) {
cevap = {
“error”: false,
“message”: “User information updated.”
}
} else {
cevap = {
“error”: true,
“message”: “User information not updated.”
}
}
} else {
cevap = {
“error”: true,
“message”: “User not found.”
}
}
}
this.response.setHeader(‘Content-Type’, ‘application/json’);
this.response.end(JSON.stringify(cevap));
})

İd parametresi boş kontrolü yaptıktan sonra ilgili kaydı vt’den buluyoruz. Sonrasında update() methodu yardımı ile ilk parametreye where koşulumuzu 2. Parametreye set edilecek json datayı veriyoruz.

5- DELETE /users/:id

.delete(function () {
var cevap;
if (this.params.id !== undefined) {
var data = User.find({ _id: this.params.id }).fetch();
if (data.length > 0) {
if (User.remove(data[0]._id) === 1) {
cevap = {
“error”: false,
“message”: “User deleted.”
}
} else {
cevap = {
“error”: true,
“message”: “User not deleted.”
}
}
} else {
cevap = {
“error”: true,
“message”: “User not found.”
}
}
}
this.response.setHeader(‘Content-Type’, ‘application/json’);
this.response.end(JSON.stringify(cevap));
});

id parametresi boş kontrolü yaptıktan sonra kaydı remove methodu yardımıyla siliyoruz.

Ve main.js’imizin son hali

import { Meteor } from ‘meteor/meteor’;
Meteor.startup(() => {
// Başlangıçta eğer yoksa MongoDB’de User adlı tablo oluşturur. Varsa veya oluşturduğunda User adlı değişkene bağlar.
User = new Meteor.Collection(‘user’);
});
if (Meteor.isServer) {
Router.route(‘/users’, { where: ‘server’ })
// GET /users — Tüm users kayıtlarını döndürür
.get(function () {
var cevap = User.find().fetch();
this.response.setHeader(‘Content-Type’, ‘application/json’);
this.response.end(JSON.stringify(cevap));
})
// POST /user — User bilgilerini MongoDB’deki user tablosuna Kaydeder.
.post(function () {
var cevap;
if (this.request.body.userName === undefined || this.request.body.userPassword === undefined) {
cevap = {
“error”: true,
“message”: “invalid data”
};
} else {
User.insert({
UserName: this.request.body.userName,
UserPassword: this.request.body.userPassword
});
cevap = {
“error”: false,
“message”: “User added.”
}
}
this.response.setHeader(‘Content-Type’, ‘application/json’);
this.response.end(JSON.stringify(cevap));
});
Router.route(‘/users/:id’, { where: ‘server’ })
// GET /users/:id — MongoDB her kayıt için bir _id değeri atar. Bu değeri göndererek ilgili kaydı görüntüleyebiliriz.
.get(function () {
var cevap;
if (this.params.id !== undefined) {
var data = User.find({ _id: this.params.id }).fetch();
if (data.length > 0) {
cevap = data
} else {
cevap = {
“error”: true,
“message”: “User not found.”
}
}
}
this.response.setHeader(‘Content-Type’, ‘application/json’);
this.response.end(JSON.stringify(cevap));
})
// PUT /users/:id MongoDB her kayıt için bir _id değeri atar. Bu değeri göndererek ilgili kaydı düzenleyebiliriz.
.put(function () {
var cevap;
if (this.params.id !== undefined) {
var data = User.find({ _id: this.params.id }).fetch();
if (data.length > 0) {
if (User.update({ _id: data[0]._id }, { $set: { UserName: this.request.body.userName, UserPassword: this.request.body.userPassword } }) === 1) {
cevap = {
“error”: false,
“message”: “User information updated.”
}
} else {
cevap = {
“error”: true,
“message”: “User information not updated.”
}
}
} else {
cevap = {
“error”: true,
“message”: “User not found.”
}
}
}
this.response.setHeader(‘Content-Type’, ‘application/json’);
this.response.end(JSON.stringify(cevap));
})
// DELETE /users/:id MongoDB her kayıt için bir _id değeri atar. Bu değeri göndererek ilgili kaydı silebiliriz.
.delete(function () {
var cevap;
if (this.params.id !== undefined) {
var data = User.find({ _id: this.params.id }).fetch();
if (data.length > 0) {
if (User.remove(data[0]._id) === 1) {
cevap = {
“error”: false,
“message”: “User deleted.”
}
} else {
cevap = {
“error”: true,
“message”: “User not deleted.”
}
}
} else {
cevap = {
“error”: true,
“message”: “User not found.”
}
}
}
this.response.setHeader(‘Content-Type’, ‘application/json’);
this.response.end(JSON.stringify(cevap));
});
}

Kodları Buraya Tıklayarak Github Sayfamdan İnceleyebilirsiniz.

Postman Üzerinden İstekleri Görüntüleyebilirsiniz.

1-Yeni User Kaydı (POST)

2-Tüm Userları Çağırma (GET)

3-User Güncelleme (PUT)

4-User Silme(DELETE)

5-Tek bir User Kaydı Getirme(GET:id)

Exit mobile version