Está en la página 1de 11

Diseño de aplicaciones web y

móviles - Creando API's REST


con Node.js y KoaJS
TEL -355 Primer semestre 2023 Campus San Joaquín
Victor H. Garay Sáez.
Koa Js
• Denominado por sus autores como un web framework de nueva generación para
Js
• Es desarrollado por los mismos autores de Espress con la garantoa de ser mas
liviano, robusto y mas expresivo al momento de crear aplicaciones web y APIs.
• En su web describen que : ”Koa no incluye ningún middleware en su núcleo y
proporciona un elegante conjunto de métodos que hacen que escribir servidores
sea rápido y agradable.”
• Aunque curiosamente describen una aplicación como: ” Una aplicación Koa es un
objeto que contiene una serie de funciones de middleware que se componen y
ejecutan en forma de pila a pedido. ”
Modelo Cebolla (Onion Model)
• Indica que la solicitud cruza por cada middleware como si fuera una capa de la
cebolla hasta llegar a la última.
• Seguidamente, continua su trayecto pasando por cada capa desde el interior
hacia el exterior
Proyecto inicial
• En consola se ejecuta
npm init -y

Donde el –y permite crear rápidamente un package.son sin el paso a paso, pero


vacío. Recuerde editar para después colocar su nombre en “author”.

• Seguidamente en consola se ejecuta

npm install -S koa

Donde –S es lo mismo que npm install --silent


Proyecto inicial
• Al crear el nuevo archivo app.js este se completa con:

const Koa = require('koa');


const app = new Koa();

app.use(async ctx => {


ctx.body = ‘Presentación inicial de Koa JS';
});

app.listen(3004); //puerto que esta libre de proyectos


Proyecto inicial
• En consola se ejecuta
node app.js

• Seguidamente en la barra del navegador se ejecuta

http://localhost:3004
repaso
• En el tercer reglón de app.js , se puede observar:

app.use(async ctx =>

• Donde async es la function que en complemento con await permite el


comportamiento asincrono basado en promesas
repaso
• Recordando el ejemplo de /developer.mozilla.org, se puede observar:
function resolveAfter2Seconds() {
return new Promise(resolve => {
setTimeout(() => {
resolve('resolved');
}, 2000);
});
}
async function asyncCall() {
console.log('calling');
const result = await resolveAfter2Seconds();
console.log(result); // donde la salida esperada seria: "resolved"
}
asyncCall();
context(ctx)
• En el tercer y cuarto reglón de app.js , se puede observar:

app.use(async ctx => {


ctx.body =

• Donde ctx es un objeto que contiene una vasta cantidad de propiedades


relacionada con las solicitudes y es de utilidad en KoaJs, un ejemplo de esto es:

• ctx.request: Objeto request de koajs. ( reconoce también node ctx.req: )


• ctx.response: Objeto response de koajs. ( reconoce también node ctx.res: )
(ctx.response.status=200 // que es un OK)
context(ctx)
• ctx.state: Objeto recomendado para pasar datos entre middlewares.

• ctx.throw: Función útil para lanzar errores en la aplicación, por defecto


devuelve el status 500.

• ctx.body: Es un prefijo permitido para crear el cuerpo de una pagina, aunque


lo mas formal es llamar a request.body=

• Mas información en:


https://koajs.com/#Context
https://github.com/koajs/koa/wiki
Fin clase 05
Gracias por su asistencia.

¿Dudas, consultas…?

También podría gustarte