English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
REST, acronimo di Representational State Transfer (trasferimento dello stato espressivo), è uno stile di architettura software proposto dal dott. Roy Fielding nel suo lavoro di tesi di dottorato del 2000.
La trasformazione dello stato espressivo è un insieme di vincoli architetturali e principi. Le applicazioni o i design che soddisfano questi vincoli e principi sono RESTful. È necessario notare che REST è uno stile di progettazione e non uno standard. REST è solitamente basato su protocolli e standard esistenti e largamente diffusi come HTTP, URI, XML (un sottoinsieme del linguaggio di markup generale standard) e HTML (un'applicazione del linguaggio di markup generale standard). REST utilizza solitamente il formato dei dati JSON.
Di seguito sono riportati i quattro metodi di base dell'architettura REST:
GET - Utilizzato per ottenere dati.
PUT - Utilizzato per aggiornare o aggiungere dati.
DELETE - Utilizzato per eliminare dati.
POST - Utilizzato per aggiungere dati.
Un servizio web è un'applicazione piattaforma indipendente, de-coupled, autocontenuta e basata su applicazioni web programmabili, che può utilizzare lo standard XML aperto (un sottoinsieme del linguaggio di markup generale) per descrivere, pubblicare, trovare, coordinare e configurare queste applicazioni, utilizzate per sviluppare applicazioni distribuite interoperabili.
I servizi web basati su architettura REST sono RESTful.
Grazie alle sue caratteristiche leggere e al trasporto diretto dei dati tramite HTTP, il metodo RESTful dei servizi web è diventato il metodo più comune. È possibile implementare il client in vari linguaggi (ad esempio Java, Perl, Ruby, Python, PHP e Javascript [incluso Ajax]).
I servizi web RESTful possono essere acceduti tramite client automatici o rappresentanti applicazioni per gli utenti. Tuttavia, la semplicità di questo servizio permette agli utenti di interagire direttamente con esso, costruire un GET URL utilizzando il loro browser web e leggere il contenuto restituito.
Prima di tutto, crea un file di risorse JSON users.json, il contenuto è come segue:
{ "user1": { "name": "Sea", "password": "password1", "profession": "teacher", "id": 1 }, "user2": { "name": "suresh", "password": "password2"}} "profession": "librarian", "id": 2 }, "user3": { "name": "ramesh", "password": "password3", "profession": "clerk", "id": 3 } }
Sulla base dei dati sopra elencati, abbiamo creato i seguenti API RESTful:
Numero | URI | Metodo HTTP | Inviare il contenuto | Risultato |
---|---|---|---|---|
1 | listUsers | GET | Vuoto | Mostra l'elenco completo degli utenti |
2 | addUser | POST | Stringa JSON | Aggiungi un nuovo utente |
3 | deleteUser | DELETE | Stringa JSON | Eliminare l'utente |
4 | :id | GET | Vuoto | Mostra i dettagli dell'utente |
Ecco il codice che abbiamo creato per l'API RESTful listUsersusato per leggere l'elenco delle informazioni degli utenti, il codice del file server.js è come segue:
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("Esempio di applicazione, indirizzo di accesso http://%s:%s", host, port) }
Esegui i seguenti comandi:
$ node server.js Esempio di applicazione, indirizzo di accesso http://0.0.0.0:8081
Accedi all'indirizzo http://127.0.0.1:8081/listUsers, i risultati sono come segue:
{ "user1": { "name": "Sea", "password": "password1", "profession": "teacher", "id": 1 }, "user2": { "name": "suresh", "password": "password2"}} "profession": "librarian", "id": 2 }, "user3": { "name": "ramesh", "password": "password3", "profession": "clerk", "id": 3 } }
Ecco il codice che abbiamo creato per l'API RESTful addUserusato per aggiungere nuovi dati utente, il codice del file server.js è come segue:
var express = require('express'); var app = express(); var fs = require("fs"); // Dati del nuovo utente da aggiungere var user = { "user4": { "name": "mohit", "password": "password4", "profession": "teacher", "id": 4 } } app.get('/addUser', function(req, res) { // Leggi i dati esistenti 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("Esempio di applicazione, indirizzo di accesso http://%s:%s", host, port) }
Esegui i seguenti comandi:
$ node server.js Esempio di applicazione, indirizzo di accesso http://0.0.0.0:8081
Accedi al browser e vai su http://127.0.0.1:8081/addUser, il risultato è come segue:
{ user1: { name: 'Sea', 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} }
Ecco il codice che abbiamo creato per l'API RESTful :id (ID utente)usato per leggere i dettagli dell'utente specifico, il codice del file server.js è come segue:
var express = require('express'); var app = express(); var fs = require("fs"); app.get('/:id', function(req, res) { // Prima di tutto leggiamo l'utente esistente 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("Esempio di applicazione, indirizzo di accesso http://%s:%s", host, port) }
Esegui i seguenti comandi:
$ node server.js Esempio di applicazione, indirizzo di accesso http://0.0.0.0:8081
Accedi al browser e vai su http://127.0.0.1:8081/2, il risultato è come segue:
{ "name":"suresh", "password":"password2", "profession":"librarian", "id":2 }
Ecco il codice che abbiamo creato per l'API RESTful deleteUser, utilizzato per eliminare i dettagli dell'utente specificato, nell'esempio seguente, l'id dell'utente è 2, il codice del file server.js è come segue:
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("Esempio di applicazione, indirizzo di accesso http://%s:%s", host, port) }
Esegui i seguenti comandi:
$ node server.js Esempio di applicazione, indirizzo di accesso http://0.0.0.0:8081
Accedi al browser tramite http://127.0.0.1:8081/deleteUser, i risultati sono come segue:
{ user1: { name: 'Sea', password: 'password1', profession: 'teacher', id: 1 }, user3: { name: 'ramesh', password: 'password3', profession: 'clerk', id: 3 } }