Node.js - RESTful API
REST mimarisi nedir?
REST, Temsili Durum Transferi anlamına gelir. REST, web standartları tabanlı bir mimaridir ve HTTP Protokolünü kullanır. Her bileşenin bir kaynak olduğu ve bir kaynağa HTTP standart yöntemlerini kullanan ortak bir arayüzle erişildiği bir kaynak etrafında döner. REST, ilk olarak 2000 yılında Roy Fielding tarafından tanıtıldı.
Bir REST Sunucusu, kaynaklara ve REST istemcisine erişim sağlar ve HTTP protokolünü kullanarak kaynakları değiştirir. Burada her bir kaynak, URI'ler / global ID'ler ile tanımlanır. REST, metin, JSON, XML gibi bir kaynağı temsil etmek için çeşitli temsiller kullanır, ancak JSON en popüler olanıdır.
HTTP yöntemleri
Aşağıdaki dört HTTP yöntemi, REST tabanlı mimaride yaygın olarak kullanılmaktadır.
GET - Bu, bir kaynağa salt okunur erişim sağlamak için kullanılır.
PUT - Bu, yeni bir kaynak oluşturmak için kullanılır.
DELETE - Bu, bir kaynağı kaldırmak için kullanılır.
POST - Bu, mevcut bir kaynağı güncellemek veya yeni bir kaynak oluşturmak için kullanılır.
RESTful Web Hizmetleri
Web hizmeti, uygulamalar veya sistemler arasında veri alışverişi için kullanılan açık protokoller ve standartların bir koleksiyonudur. Çeşitli programlama dillerinde yazılan ve çeşitli platformlarda çalışan yazılım uygulamaları, tek bir bilgisayardaki süreçler arası iletişime benzer bir şekilde İnternet gibi bilgisayar ağları üzerinden veri alışverişi yapmak için web hizmetlerini kullanabilir. Bu birlikte çalışabilirlik (örneğin, Java ile Python arasındaki iletişim veya Windows ve Linux uygulamaları) açık standartların kullanımından kaynaklanmaktadır.
REST Mimarisine dayalı web servisleri, RESTful web servisleri olarak bilinir. Bu web hizmetleri, REST mimarisi konseptini uygulamak için HTTP yöntemlerini kullanır. Bir RESTful web hizmeti genellikle bir URI, Tekdüzen Kaynak Tanımlayıcı, JSON ve HTTP Yöntemleri kümesi gibi kaynak gösterimi sağlayan bir hizmeti tanımlar.
Bir Kitaplık İçin RESTful Oluşturma
Aşağıdaki kullanıcıların bir dosyada bulunduğu JSON tabanlı bir veritabanımız olduğunu düşünün users.json:
{
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "ramesh",
"password" : "password3",
"profession" : "clerk",
"id": 3
}
}
Bu bilgilere dayanarak, aşağıdaki RESTful API'leri sağlayacağız.
Sr.No. | URI | HTTP Yöntemi | POST gövdesi | Sonuç |
---|---|---|---|---|
1 | listUsers | ALMAK | boş | Tüm kullanıcıların listesini göster. |
2 | Kullanıcı Ekle | İLETİ | JSON Dizesi | Yeni kullanıcının ayrıntılarını ekleyin. |
3 | kullanıcıyı sil | SİL | JSON Dizesi | Mevcut bir kullanıcıyı silin. |
4 | :İD | ALMAK | boş | Bir kullanıcının ayrıntılarını gösterin. |
Ajax veya basit form verilerini kullanarak ön uçtan değerleri nasıl aktaracağınızı ve bunları ifade kullanarak nasıl işleyeceğinizi zaten bildiğinizi varsayarak, tüm örneklerin çoğunu sabit kodlama biçiminde tutuyorum. Request nesne.
Kullanıcıları Listele
İlk RESTful API'mizi uygulayalım listUsers bir server.js dosyasında aşağıdaki kodu kullanarak -
server.js
var express = require('express');
var app = express();
var fs = require("fs");
app.get('/listUsers', function (req, res) {
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
console.log( data );
res.end( data );
});
})
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
Şimdi , herhangi bir REST istemcisini kullanarak yerel makinede http://127.0.0.1:8081/listUsers ve HTTP Metodu: GET URL'sini kullanarak tanımlı API'ye erişmeyi deneyin . Bu, aşağıdaki sonucu vermelidir -
Çözümü üretim ortamına koyacağınız zaman verilen IP adresini değiştirebilirsiniz.
{
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "ramesh",
"password" : "password3",
"profession" : "clerk",
"id": 3
}
}
Kullanıcı Ekle
Aşağıdaki API, listeye nasıl yeni kullanıcı ekleyeceğinizi gösterecektir. Yeni kullanıcının detayı aşağıdadır -
user = {
"user4" : {
"name" : "mohit",
"password" : "password4",
"profession" : "teacher",
"id": 4
}
}
Aynı girdiyi Ajax çağrısını kullanarak JSON biçiminde kabul edebilirsiniz, ancak bakış açısını öğretmek için burada kodlanmış hale getiriyoruz. AşağıdakiaddUser Veritabanındaki yeni bir kullanıcıya API -
server.js
var express = require('express');
var app = express();
var fs = require("fs");
var user = {
"user4" : {
"name" : "mohit",
"password" : "password4",
"profession" : "teacher",
"id": 4
}
}
app.post('/addUser', function (req, res) {
// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
data["user4"] = user["user4"];
console.log( data );
res.end( JSON.stringify(data));
});
})
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
Şimdi , herhangi bir REST istemcisini kullanarak yerel makinede http://127.0.0.1:8081/addUser ve HTTP Metodu: POST URL'sini kullanarak tanımlı API'ye erişmeyi deneyin . Bu, aşağıdaki sonucu vermelidir -
{
"user1":{"name":"mahesh","password":"password1","profession":"teacher","id":1},
"user2":{"name":"suresh","password":"password2","profession":"librarian","id":2},
"user3":{"name":"ramesh","password":"password3","profession":"clerk","id":3},
"user4":{"name":"mohit","password":"password4","profession":"teacher","id":4}
}
Detayları göster
Şimdi, kullanıcı kimliği kullanılarak çağrılacak ve ilgili kullanıcının ayrıntılarını gösterecek bir API uygulayacağız.
server.js
var express = require('express');
var app = express();
var fs = require("fs");
app.get('/:id', function (req, res) {
// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
var users = JSON.parse( data );
var user = users["user" + req.params.id]
console.log( user );
res.end( JSON.stringify(user));
});
})
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
Şimdi , herhangi bir REST istemcisini kullanarak yerel makinede http://127.0.0.1:8081/2 URL'sini ve HTTP Metodu: GET'i kullanarak tanımlı API'ye erişmeyi deneyin . Bu, aşağıdaki sonucu vermelidir -
{"name":"suresh","password":"password2","profession":"librarian","id":2}
Kullanıcıyı sil
Bu API, req.body aracılığıyla girdi verilerini aldığımız addUser API'sine çok benzer ve ardından kullanıcı kimliğini temel alarak bu kullanıcıyı veritabanından siliyoruz. Programımızı basit tutmak için, kimliği 2 olan kullanıcıyı sileceğimizi varsayıyoruz.
server.js
var express = require('express');
var app = express();
var fs = require("fs");
var id = 2;
app.delete('/deleteUser', function (req, res) {
// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
delete data["user" + 2];
console.log( data );
res.end( JSON.stringify(data));
});
})
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
Şimdi , herhangi bir REST istemcisini kullanarak yerel makinede http://127.0.0.1:8081/deleteUser ve HTTP Yöntemi: DELETE URL'sini kullanarak tanımlı API'ye erişmeyi deneyin . Bu, aşağıdaki sonucu vermelidir -
{"user1":{"name":"mahesh","password":"password1","profession":"teacher","id":1},
"user3":{"name":"ramesh","password":"password3","profession":"clerk","id":3}}