Código expressjs y nodejs para la solución del backend corriendo en Azure.
El código final github puede ser descargado desde acá
- Creamos una nueva carpeta que se llame backend
- Instalamos los modulos de npm “yo” y “generator-swaggerize”
npm install -g yo
npm install -g generator-swaggerize
- Descargamos el archivo api.json en nuestro directorio, será nuestra definición de API
- Navegamos a la nueva carpeta y ejecutamos el comando “yo swaggerize”, esto inicializará el proyecto y nos hará unas cuantas preguntas:
yo swaggerize
- Para como llamar el proyecto “listaContactos”, “path to swagger document” ingresa
api.json
y para “Express, Hapi o Restify” ingresaexpress
- Nos posicionamos en nuestra carpeta del nuevo proyecto y ejecutamos el comando:
npm install
- Luego instalamos y guardamos el modulo jsonpath
npm install --save jsonpath
- Luego instalamos y guardamos el modulo swaggerize-ui
npm install --save swaggerize-ui
- Descarga el código final del repositorio publico https://github.com/feranto/azureOpenSourceDayMeanHolBackend
- Copia la carpeta /azureOpenSourceDayMeanHolBackend/listaContactos/lib dentro de tu carpeta listaContactos
- Reemplaza el código dentro de handlers/contacts.js con el siguiente código:
'use strict';
var repository = require('../lib/contactRepository');
module.exports = {
get: function contacts_get(req, res) {
res.json(repository.all())
}
};
- Reemplaza el código dentro de handlers/contacts/{id}.js con el siguiente código
'use strict';
var repository = require('../../lib/contactRepository');
module.exports = {
get: function contacts_get(req, res) {
res.json(repository.get(req.params['id']));
}
};
- Reemplaza el código dentro de server.js con el siguiente codigo
'use strict';
var port = process.env.PORT || 8000; // first change
var http = require('http');
var express = require('express');
var bodyParser = require('body-parser');
var swaggerize = require('swaggerize-express');
var swaggerUi = require('swaggerize-ui'); // second change
var path = require('path');
var app = express();
var server = http.createServer(app);
app.use(bodyParser.json());
app.use(swaggerize({
api: path.resolve('./config/swagger.json'), // third change
handlers: path.resolve('./handlers'),
docspath: '/swagger' // fourth change
}));
// change four
app.use('/docs', swaggerUi({
docs: '/swagger'
}));
server.listen(port, function () { // fifth and final change
});
-
Finalmente podemos correrlo localmente utilizando el siguiente comando
node server.js
-
Podemos navegar a http://localhost:8000/contacts y veremos la salida JSON de la lista de contactos
-
Podemos navegar a http://localhost:8000/contacts/2 y veremos la salida JSON del contacto con ID 2
-
Podemos navegar a http://localhost:8000/swagger y veremos la configuración swagger
-
Podemos navegar a http://localhost:8000/docs y veremos la documentación de nuestra API
- Navegamos hasta el portal de azure
- Seleccionamos Nuevo > Web + Mobile > API App.
- Ingresamos un nombre para la App
- Creamos un nuevo grupo de recurso para nuestra app con el nombre que deseemos
- Creamos un nuevo App Service Plan para nuestra app
- Le ponemos el nombre que deseemos al app service plan
- En la locación del app service plan, escogemos el que está mas cercano a nosotros
- Hacemos click en Pricing tier > View All > F1 Free.
- Confirmamos que todo este ok y seleccionamos Crear
- Después de que la API app ha sido creada exitosamente, hacemos click en App Services > {tu API app} y veremos los settings de nuestra app:
- En el panel de settings, buscamos la opción de "Deployment Options" > Choose Source > Local Git Repository, y luego presionamos Ok.
- Una vez que hemos conectado nuestro repositorio Git, nos mostrará los deployments activos.
- Copiamos la URL de de nuestra API
- Utilizando un client REST como Postman o Fiddler intentamos acceder al endpoint de
/contacts
, la URL seríahttps://{your API app name}.azurewebsites.net/listadoContactos/contacts
- Finalmente podemos probar la documentación de nuestra API visitando
/docs