Examen Lab Pao I 2023
Examen Lab Pao I 2023
Examen Lab Pao I 2023
PERÍODO 2023
Nombres y Apellidos
Escribir el texto aquí
FIEC - ESPOL
Página 1 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
Objetivo:
● Desarrollar una API que realice las funciones CRUD utilizando tecnologías de
libre distribución con bases de datos no relacionales.
Duración:
Ciento veinte (120) minutos.
Materiales y Herramientas:
● Visual Studio Code
● MongoDB.
● Node.js
Introducción
Actualmente se encuentran APIs en todos lados. Facebook, Twitter, Github, todos ellos proveen
APIs dirigidas al uso de los desarrolladores. Una API (Application Programming Interface) es un
término que utilizamos para describir una forma de intercambiar información entre programas o
sitios web.
En este laboratorio se creará una API usando el paradigma de RESTFul con Node.js y MongoDB,
y se diseñará una interfaz web interactiva con todas las operaciones CRUD; Crear, Listar, Editar y
Eliminar.
Escenario
Fueron contratados por la empresa Adita S.A. con el cargo de Desarrollador de Software Jr. para
Networking, su primera tarea es desarrollar un FrontEnd interactivo para las rutas BGP de una red
que pueda cumplir con las operaciones CRUD.
Diagrama
Página 2 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
Procedimiento
npm init
Página 3 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
Página 4 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
app.listen(3000, () => {
console.log("server started at port 3000")
});
node index.js
Página 5 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
a) Añadir el siguiente contenido al archivo index.js, para añadir una presentación simple
node index.js
Página 6 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
app.use(bodyparser.urlencoded({extended: false}))
app.use(bodyparser.json())
});
app.engine('hbs', exphbs.engine({
Página 7 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
handlebars: allowInsecurePrototypeAccess(handlebars),
extname: 'hbs',
defaultLayout: "MainLayout",
layoutsDir: __dirname + "/views/layouts/",
})
);
app.listen(3000, () => {
console.log("server started at port 3000")
});
app.use('/router', routes_controller);
f) El archivo mainLayout.hbs será la página principal, la cual contendrá los estilos css
(Bootstrap), que se usarán.
<!DOCTYPE html>
<html>
<head>
<Title>ROUTES</Title>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.mi
n.css"
integrity="sha384-
Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
crossorigin="anonymous">
<style>
#box {
background-color: #fff;
margin-top: 25px;
padding: 20 px;
-webkit-box-shadow: 10px 10px 20px 1px
rgba(0,0,0,0.75);
-moz-box-shadow: 10px 10px 20px 1px rgba(0,0,0,0.75);
box-shadow: 10px 10px 20px 1px rgba(0,0,0,0.75);
border-radius: 10px 10px 10px 10px;
-moz-border-radius: 10px 10px 10px 10px;
-webkit-border-radius: 10px 10px 10px 10px;
border: 0px solid #1f013b;
}
</style>
</head>
<body class="bg-info">
<div id='box' class="col-md-6 offset-md-3">
{{{body}}}
</div>
Página 8 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
</body>
</html>
g) En el archivo crud.hbs se crea uan forma en formato html, donde podremos modificar los
valores de la base de datos.
<h3>{{viewTitle}}</h3>
<form action='/router' method="POST" autocomplete="off">
<input type="hidden" name="_id" value="{{route._id}}">
<div class="form-group">
<label>ip</label>
<input type="text" class="form-control" name="ip"
placeholder="ip" value="{{route.ip}}">
</div>
<div class="form-group">
<label>origin</label>
<input type="text" class="form-control" name="origin"
placeholder="origin" value="{{route.origin}}">
</div>
<div class="form-group">
<label>metric</label>
<input type="text" class="form-control" name="metric"
placeholder="metric" value="{{route.metric}}">
</div>
<div class="form-group">
<label>localpref</label>
<input type="text" class="form-control" name="localpref"
placeholder="localpref" value="{{route.localpref}}">
</div>
<div class="form-group">
<label>valid</label>
<input type="text" class="form-control" name="valid"
placeholder="valid" value="{{route.valid}}">
</div>
<div class="form-group">
<label>internal</label>
<input type="text" class="form-control" name="internal"
placeholder="internal" value="{{route.internal}}">
</div>
<div class="form-group">
<label>date</label>
<input type="text" class="form-control" name="date"
placeholder="date" value="{{route.date}}">
</div>
<div class="form-group">
<button type="submit" class="btn btn-info">Submit</button>
<a class="btn btn-secondary" href="/router/list">View</a>
</div>
</form>
Página 9 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
h) En el archivo list.hbs se crea una forma en formato html, que será usada para modificar los
valores de la base de datos.
i) Usaremos el archivo routes.js, para por medio de mongoose, lograr una conexión a la base
de datos mongodb.
const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost:27017/router_db', {
useNewUrlParser: true,
},
(err) => {
Página 10 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
if (!err) {
console.log('Connection suceeded');
} else {
console.log('Error in connection' + err);
}
});
require('./routes.model');
j) El archivo routes.model.js, usará mongoose para crear un esquema que será usado por los
datos almacenados en la tabla de mongodb.
const mongoose = require('mongoose')
mongoose.model("Routes", routerSchema);
Página 11 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
}
});
Página 12 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
module.exports = router
Página 13 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
b) Crear una base de datos llamada router_db con una colección llamada routes.
Página 14 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
c) Reto: Crear un archivo .json e importar sus datos a la base de datos MongoDB creada,
usando la siguiente información.
Página 15 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
Página 16 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
Página 17 | 18
[ASSR P101] Administración de Sistemas y Servicios en Red
Docente: Adriana Collaguazo Jaramillo
Conclusiones y Recomendaciones
Click or tap here to enter text.
Conclusiones y Recomendaciones /5
Total /100
________________________________
Firma de la Profesora
Página 18 | 18