Autor: Vlad Gerasimov
HTTP (Hypermedia Text Transfer Protocol) es el método mas común de intercambio información en la Web.
Define como la información debe ser transmitida y
en que formato.
Conforma el mensaje enviado por el Cliente al Servidor.
Son utilizados para obtener, modificar, crear o eliminar recursos.
Están formados por un método, una URL y en ocasiones por un cuerpo.
Uniform Resource Locator
Conforma la respuesta del Servidor al Cliente.
Son utilizados indicar devolver recursos o bien indicar cambios de estado en los mismos.
Están formados por un estado, una descripción del estado y en ocasiones por un cuerpo.
Es una arquitectura que define la manera en la que algunos estándares web, como HTTP y las URLs, deben de ser usadas.
REST propone una serie de principios de diseño fundamentales que deben ser seguidos.
Si seguimos estos principios, explotaremos a nuestro beneficio la arquitectura web propuesta.
REST establece una asociación uno-a-uno entre las operaciones de crear, leer, actualizar y borrar y los métodos HTTP.
REST establece que la información asociada a una petición no debe trascender a la misma.
El contexto o datos adicionales necesarios para resolver una petición deben de viajar en la misma, no pueden ser almacenadas en el servidor.
Todos los recursos accedidos mediante peticiones REST deben de tener una ID que los represente.
De esta manera podemos especificar a que recurso hacemos referencia en la petición.
GET www.ejemplo.com/persona/254
Todos los recursos tienen que poder ser representados de diferentes maneras, por ejemplo, XML, JSON o ambos!
El tipo de representación utilizada debe ser especificada en la cabecera de la petición.
{
"id": 254
, "nombre": "Neri"
, "apellido": "Guidi"
}Es un entorno que utiliza el motor V8 creado por Google para la ejecución de código JavaScript.
Dicho motor tiene la particularidad de que no necesita del navegador para funcionar por lo que nos permite correr JavaScript en el servidor.
Utiliza un modelo asincrónico y dirigido por eventos.
Node esta diseñado para situaciones en la que se necesite una gran cantidad de trafico y donde la logica del lado del servidor y el procesamiento requerido, no sea grande.
Por ejemplo:
Cada conexión dispara un evento dentro del motor de node.
Cuando se detecta el evento, el motor reserva una cantidad dada de memoria, evalúa el evento y genera una respuesta.
Luego el motor duerme a la espera de un nuevo evento.
Todas las conexiones son mantenidas en un solo hilo por lo que en teoría puede soportar hasta 65.000 conexiones simultaneas.
Solamente genera nuevos hilos para realizar operaciones bloqueantes.
Una aplicación normal podría mantener hasta 25.000 conexiones sin que se produzcan retardos en las respuestas.
Utilizas JavaScript tanto en cliente y en el servidor.
Esta basado en eventos por lo que la filosofía asíncronica que aplicábamos en el cliente la podemos utilizar en el servidor.
Tiene una comunidad enorme y en constante crecimiento documentando y compartiendo tutoriales.
Cuenta con el mayor ecosistema de librerias open source del mundo.
Debido a su arquitectura de utilizar un solo hilo también solo podrá utilizar una única CPU.
Esta en constante crecimiento y muchos de los cambios no pueden ser aplicados a versiones muy anteriores.
Existen muchas maneras de programar en node.
Hay otros proyectos muy similares:
Solo basta descargar e instalar la versión que corresponda según nuestro sistema operativo.
Existe un software llamado NVM que permite manejar diferentes versiones de node de forma simultanea.
Node incluye una serie de módulos que mejoran y facilitan su utilización.
Cada uno de los modulos se encuentra diseñado para una funcionalidad dada.
NPM es el gestor de paquetes de node. Permite instalar de forma global o local (según el paquete) módulos creados por otras personas y hacer uso de ellos.
Podemos ver los paquetes disponibles en su sitio
Ir a npmjs
var http = require('http');
var server = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hola Mundo\n');
});
server.listen(3000);
console.log('Servidor Corriendo!');