Node.js RESTful-API
Was ist REST?
REST (Representational State Transfer) ist ein Softwarearchitekturstil, der von Dr. Roy Fielding in seiner Doktorarbeit im Jahr 2000 vorgeschlagen wurde.
Representational State Transfer ist eine Reihe von architektonischen Einschränkungen und Prinzipien. Anwendungen oder Entwürfe, die diese Einschränkungen und Prinzipien erfüllen, sind RESTful. Beachten Sie, dass REST ein Designstil und kein Standard ist. REST basiert typischerweise auf der Verwendung vorhandener, weit verbreiteter Protokolle und Standards wie HTTP, URI, XML (eine Teilmenge der Standard Generalized Markup Language) und HTML (eine Anwendung der Standard Generalized Markup Language). REST verwendet üblicherweise das JSON-Datenformat.
HTTP-Methoden
Die folgenden sind die vier Methoden der grundlegenden REST-Architektur:GET- Wird zum Abrufen von Daten verwendet.
PUT- Wird zum Aktualisieren oder Hinzufügen von Daten verwendet.
DELETE- Wird zum Löschen von Daten verwendet.
POST- Wird zum Hinzufügen von Daten verwendet.
RESTful-Webdienste
Ein Webdienst ist eine plattformunabhängige, lose gekoppelte, eigenständige, programmierbare webbasierte Anwendung. Er verwendet den offenen XML-Standard (eine Teilmenge von Standard Generalized Markup Language), um diese Anwendungen zu beschreiben, zu veröffentlichen, zu entdecken, zu koordinieren und zu konfigurieren, und wird zur Entwicklung verteilter, interoperabler Anwendungen verwendet.
Webdienste, die auf der REST-Architektur basieren, sind RESTful.
Aufgrund seiner Leichtgewichtigkeit und der Fähigkeit, Daten direkt über HTTP zu übertragen, ist der RESTful-Ansatz für Webdienste zur gebräuchlichsten Alternative geworden. Clients können in verschiedenen Sprachen implementiert werden (z. B. Java-Programme, Perl, Ruby, Python, PHP und Javascript [einschließlich Ajax]).
Auf RESTful-Webdienste kann normalerweise von automatisierten Clients oder Anwendungen, die im Namen von Benutzern handeln, zugegriffen werden. Die Einfachheit solcher Dienste ermöglicht es Benutzern jedoch, direkt mit ihnen zu interagieren, indem sie eine GET-URL in ihrem Webbrowser erstellen und den zurückgegebenen Inhalt lesen.
Weitere Informationen finden Sie unter:Ausführliche Erklärung der RESTful-Architektur
RESTful erstellen
Erstellen Sie zunächst eine JSON-Datenressourcendatei users.json mit folgendem Inhalt:
{
"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
}
}
Basierend auf den oben genannten Daten erstellen wir die folgenden RESTful-APIs:
| Lfd. Nr. | URI | HTTP-Methode | Anfrageinhalt | Ergebnis |
|---|---|---|---|---|
| 1 | listUsers | GET | Leer | Liste aller Benutzer anzeigen |
| 2 | addUser | POST | JSON-String | Neuen Benutzer hinzufügen |
| 3 | deleteUser | DELETE | JSON-String | Benutzer löschen |
| 4 | :id | GET | Leer | Detaillierte Benutzerinformationen anzeigen |
Benutzerliste abrufen:
Im folgenden Code erstellen wir eine RESTful-APIlistUsers, die zum Lesen der Liste der Benutzerinformationen verwendet wird. Der Code der Datei server.js lautet wie folgt:
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("应用实例,访问地址为 http://%s:%s", host, port)
})
Führen Sie als Nächstes den folgenden Befehl aus:
$ node server.js 应用实例,访问地址为 http://0.0.0.0:8081
Rufen Sie http://127.0.0.1:8081/listUsers im Browser auf; das Ergebnis sieht wie folgt aus:
{
"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
}
}
Benutzer hinzufügen
Im folgenden Code erstellen wir eine RESTful-APIaddUser, die verwendet wird, um neue Benutzerdaten hinzuzufügen. Der Code der Datei server.js lautet wie folgt:
var express = require('express');
var app = express();
var fs = require("fs");
//添加的新用户数据
var user = {
"user4" : {
"name" : "mohit",
"password" : "password4",
"profession" : "teacher",
"id": 4
}
}
app.get('/addUser', function (req, res) {
// 读取已存在的数据
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("应用实例,访问地址为 http://%s:%s", host, port)
})
Führen Sie als Nächstes den folgenden Befehl aus:
$ node server.js 应用实例,访问地址为 http://0.0.0.0:8081
Besuchen Sie http://127.0.0.1:8081/addUser im Browser, und das Ergebnis sieht wie folgt aus:
{ 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 }
}
Benutzerdetails anzeigen
Im folgenden Code erstellen wir eine RESTful-API:id (Benutzer-ID), die verwendet wird, um die detaillierten Informationen des angegebenen Benutzers zu lesen. Der Code der Datei server.js lautet wie folgt:
var express = require('express');
var app = express();
var fs = require("fs");
app.get('/:id', function (req, res) {
// 首先我们读取已存在的用户
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
var user = data["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("应用实例,访问地址为 http://%s:%s", host, port)
})
Führen Sie als Nächstes den folgenden Befehl aus:
$ node server.js 应用实例,访问地址为 http://0.0.0.0:8081
Besuchen Sie http://127.0.0.1:8081/2 im Browser, und das Ergebnis sieht wie folgt aus:
{
"name":"suresh",
"password":"password2",
"profession":"librarian",
"id":2
}
Benutzer löschen
Im folgenden Code erstellen wir eine RESTful-APIdeleteUser, die verwendet wird, um die detaillierten Informationen des angegebenen Benutzers zu löschen. Im folgenden Beispiel ist die Benutzer-ID 2. Der Code der Datei server.js lautet wie folgt:
var express = require('express');
var app = express();
var fs = require("fs");
var id = 2;
app.get('/deleteUser', function (req, res) {
// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
delete data["user" + id];
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("应用实例,访问地址为 http://%s:%s", host, port)
})
Führen Sie als Nächstes den folgenden Befehl aus:
$ node server.js 应用实例,访问地址为 http://0.0.0.0:8081
Besuchen Sie http://127.0.0.1:8081/deleteUser im Browser, und das Ergebnis sieht wie folgt aus:
{ user1:
{ name: 'mahesh',
password: 'password1',
profession: 'teacher',
id: 1 },
user3:
{ name: 'ramesh',
password: 'password3',
profession: 'clerk',
id: 3 }
}
Weitere Erweiterungen