English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial básico de NodeJS

Express.js de NodeJS

Buffer & URL de NodeJS

MySql de NodeJS

MongoDB de NodeJS

Archivos (FS) de NodeJS

Otras características de NodeJS

API RESTful de Node.js

¿Qué es REST?

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.

Método HTTP

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.

Servicios web RESTful

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.

Crear RESTful

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úmeroURIMétodo HTTPEnviar contenidoResultados
1listUsersGETVacíoMostrar lista de todos los usuarios
2addUserPOSTCadena JSONAñadir nuevo usuario
3eliminarUsuarioDELETECadena JSONEliminar usuario
4:idGETVacíoMostrar detalles del usuario

Obtener lista de usuarios:

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
   }
}

Añadir usuario

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 } 
}

Mostrar detalles del usuario

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
}

Eliminar usuario

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 } 
}