English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
REST, que significa Estado de Transferencia Expresivo (Representational State Transfer, en inglés), es un estilo de arquitectura de software propuesto por el Dr. Roy Fielding en2de 000 fue propuesto en su tesis doctoral.
El Estado de Transferencia Expresivo (REST, por sus siglas en inglés) es un conjunto de restricciones y principios arquitectónicos. Las aplicaciones o diseños que satisfacen estas restricciones y principios son RESTful. Es importante notar que REST es un estilo de diseño y no un estándar. REST generalmente se basa en el uso de HTTP, URI, XML (un subconjunto del lenguaje de marcado generalizado) y HTML (una aplicación del lenguaje de marcado generalizado) estos protocolos y estándares ampliamente utilizados. REST generalmente utiliza el formato de datos JSON.
A continuación se presentan los cuatro métodos básicos de la arquitectura REST:
GET - Usado para obtener datos.
PUT - Usado para actualizar o agregar datos.
DELETE - Usado para eliminar datos.
POST - Usado para agregar datos.
Un servicio web es una aplicación independiente de la plataforma, baja en acoplamiento, autónoma y basada en aplicaciones web programables, que puede describir, publicar, descubrir, coordinar y configurar estas aplicaciones utilizando estándares de XML (un subconjunto del lenguaje de marcado generalizado) abiertos, para desarrollar aplicaciones distribuidas de interoperabilidad.
Los servicios web basados en la arquitectura REST son RESTful.
Debido a sus características ligeros y de transmisión de datos directamente a través de HTTP, el método RESTful de los servicios web se ha convertido en el método más común de sustitución. Los clientes pueden implementarse en varios lenguajes (como Java, Perl, Ruby, Python, PHP y Javascript [incluido Ajax]).
Los servicios web RESTful se pueden acceder generalmente a través de clientes automáticos o aplicaciones que representan a los usuarios. Sin embargo, la simplicidad de este servicio permite a los usuarios interactuar con él directamente, utilizando su navegador web para construir una URL GET y leer el contenido devuelto.
Primero, creamos un archivo de recursos de datos JSON users.json, con el contenido siguiente:
{ "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 } }
Basado en los datos anteriores, creamos las siguientes API RESTful:
Número | URI | Método HTTP | Enviar contenido | Resultados |
---|---|---|---|---|
1 | listUsers | GET | Vacío | Mostrar lista de todos los usuarios |
2 | addUser | POST | Cadena JSON | Añadir nuevo usuario |
3 | eliminarUsuario | DELETE | Cadena JSON | Eliminar usuario |
4 | :id | GET | Vacío | Mostrar detalles del usuario |
En el siguiente código, creamos una API RESTful listUsers,usado para leer la lista de información de los usuarios,el código del archivo server.js se muestra a continuación:
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("Ejemplo de aplicación, dirección de acceso a http://%s:%s", host, port) }
A continuación, ejecute los siguientes comandos:
$ node server.js Ejemplo de aplicación, dirección de acceso a http://0.0.0.0:8081
Acceda en el navegador a http://127.0.0.1:8081/listUsers,resultados como se muestra a continuación:
{ "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 } }
En el siguiente código, creamos una API RESTful addUser,usado para añadir nuevos datos de usuarios,el código del archivo server.js se muestra a continuación:
var express = require('express'); var app = express(); var fs = require("fs"); //Los datos del nuevo usuario añadido var user = { "user4" : { "name" : "mohit", "password" : "password4", "profession" : "teacher", "id": 4 } } app.get('/addUser', function (req, res) { // Leer los datos existentes 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("Ejemplo de aplicación, dirección de acceso a http://%s:%s", host, port) }
A continuación, ejecute los siguientes comandos:
$ node server.js Ejemplo de aplicación, dirección de acceso a http://0.0.0.0:8081
Acceda en el navegador a http://127.0.0.1:8081/addUser,resultados como se muestra a continuación:
{ usuario1: { name: 'Sea', contraseña: 'password1', profesión: 'teacher', id: 1 }, usuario2: { name: 'suresh', contraseña: 'password2', profession: 'librarian', id: 2 }, usuario3: { name: 'ramesh', contraseña: 'password3', profesión: 'clerk', id: 3 }, usuario4: { name: 'mohit', contraseña: 'password4', profesión: 'teacher', id: 4 } }
En el siguiente código, creamos una API RESTful :id(ID de usuario),usado para leer los detalles del usuario específico,el código del archivo server.js se muestra a continuación:
var express = require('express'); var app = express(); var fs = require("fs"); app.get('/:id', function (req, res) { // Primero leemos el usuario existente 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("Ejemplo de aplicación, dirección de acceso a http://%s:%s", host, port) }
A continuación, ejecute los siguientes comandos:
$ node server.js Ejemplo de aplicación, dirección de acceso a http://0.0.0.0:8081
Acceda en el navegador a http://127.0.0.1:8081/2,resultados como se muestra a continuación:
{ "name":"suresh", "password":"password2", "profesión":"bibliotecario", "id":2 }
En el siguiente código, creamos una API RESTful eliminarUsuario, se utiliza para eliminar los detalles del usuario especificado, en el siguiente ejemplo, el id del usuario es 2,el código del archivo server.js se muestra a continuación:
var express = require('express'); var app = express(); var fs = require("fs"); var id = 2; app.get('/eliminarUsuario', function (req, res) { // Primero, lea los usuarios existentes. fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) { data = JSON.parse( data ); eliminar data["usuario" + 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("Ejemplo de aplicación, dirección de acceso a http://%s:%s", host, port) }
A continuación, ejecute los siguientes comandos:
$ node server.js Ejemplo de aplicación, dirección de acceso a http://0.0.0.0:8081
Acceda en el navegador a http://127.0.0.1:8081/eliminarUsuario, resultado como se muestra a continuación:
{ usuario1: { name: 'Sea', contraseña: 'password1', profesión: 'teacher', id: 1 }, usuario3: { name: 'ramesh', contraseña: 'password3', profesión: 'clerk', id: 3 } }