Primeros pasos RESTful API con Node js 1/2
Una de las nuevas tendencias e implementaciones que se están dando hoy en día al momento de construir una app o una webapp, es el tener una buena base del lado del Servidor(Backend), orientándolo a Servicios Web (Web Services).
Hay muchas ramas de Servicios Web, donde podríamos seguir hablando, pero en este tutorial el objetivo será construir un RESTful API con nodejs, express & mongodb.
RESTful
Se compone por cuatro principios:
-Protocolo cliente/servidor (sin el uso de sesiones o cookies).
-Operaciones POST, GET, PUT, DELETE, etc…
-Emplean un localizador de recursos uniforme (URL).
-Empleo de algún formato de intercambio de datos (json, xml, etc.).
Manos a la obra
En éste ejemplo construiremos un sencillo servicio de reportes, aplicando los cuatro principios antes comentados:
Protocolo: HTTP
Formato: JSON
Operaciones & URL:
route POST GET PUT DELETE
/api/reports ✓ ✓
/api/reports/:id ✓ ✓ ✓
Estructura del Proyecto
|--ReportAPI/
|--models/
|--report.js
|--routes/
|--reports.js
|--node_mules/
|--body-parser/
|--express/
|--mongoose/
|--public/
|--package.json
|--server.js
Nuestro proyecto estará dividido por modelos(contiene el Schema del reporte), rutas(Se define las operaciones & URL a usarse), módulos de node(librerías empleadas), public(archivos del lado del cliente como html, css, entre otros…), package.json(decimos que dependencias usaremos) & server.js(nuestro main, el encargado de correr el proyecto).
Primeros pasos
package.json
Es un archivo que contiene metadata relevante del proyecto, como la identidad(autor, descripción, versión, licencia, etc…) y dependencias que usa(en nuestro caso usaremos express. body-parser & mongoose).
{
“name”: “ReportAPI”,
“version”: “0.0.1",
“private”: true,
“main”: “server.js”,
“author”: “Abraham Silva”,
“dependencies”:{
“express”: “~4.2.0",
“body-parser”: “~1.0.0",
“mongoose”: “~3.8.11"
}
}
Una vez creado el archivo, tecleamos en la terminal el siguiente comando:
npm install
Podremos ver en la terminal como se crea un folder(node_modules), donde nos agregará los módulos, ya antes mencionados para construir nuestro servicio.
Ojo:
Nuestro archivo main es server.js, el cuál servirá el archivo principal donde tendremos la configuración, rutas, entre otros, así que continuaremos a construirlo.
server.js
//libraries
var express = require(‘express’);
var bodyParser = require(‘body-parser’);
var mongoose = require(‘mongoose’);//init app
var app = express();//define port
var port = process.env.PORT || 3000;
var router = express.Router();//Sample Route
router.get(“/”, function(req, res){
res.json({ message: ‘Hi everybody…!’});
});//Middleware
app.use(‘/api’, router);//Start the server
app.listen(port);
console.log(‘Server listening in the port: ‘ + port);
Una vez creado el archivo anterior, podemos correrlo y tener un pequeño servicio, donde nos regresará una respuesta, para esto tecleamos en la terminal:
npm server
Nuestra única ruta disponible para este servicio es un GET, que correrá con la siguiente url
http://localhost:3000/api/
Testing
Si queremos testear nuestro pequeño servicio, lo podemos hacer con la herramienta postman para chrome.
Dejo aquí la liga del repositorio.