Planeación de la migración de Node.js y Express a Azure Functions

Completado

Para planear el cambio de la aplicación de back-end Express a una aplicación sin servidor, puede dividir la aplicación Express en tres áreas principales:

  • El servidor de Express, que se encuentra principalmente en server.ts.
  • Las rutas, que están en la carpeta routes/.
  • La lógica de acceso a datos, que se encuentra en la carpeta services/

Para refactorizar el código de Express a Azure Functions, planee estas acciones, que comenzará a implementar en la siguiente unidad:

  1. Cree una aplicación de Azure Functions.
  2. Copie la carpeta services de Node.js Express en la aplicación de Azure Functions. Esto funciona porque los servicios de datos no están vinculados al servidor Express.
  3. Cree una nueva API de función para cada punto de conexión de ruta.
    • Obtener vacaciones
    • Agregar vacaciones
    • Actualizar unas vacaciones
    • Eliminar unas vacaciones
  4. Actualice el código de función para usar la lógica de acceso a datos en la carpeta services/.
  5. Actualice las rutas de función para que coincidan con las rutas de Express originales.

Ejemplo de ExpressRoute

Este es un ejemplo sencillo de una ruta de Express que obtiene vacaciones del servicio de vacaciones. Observe que los parámetros del controlador de ruta sean los objetos req y res.

import * as express from 'express';
import { vacationService } from '../services';

const router = express.Router();

router.get('/vacations', (req, res) => {    // API route
  vacationService.getVacations(req, res);   // Data access logic
});

Ejemplo de ruta de Azure Functions

Este es un ejemplo sencillo de un controlador de rutas de Azure Functions y una definición de ruta que obtiene vacaciones del servicio de vacaciones. Observe que los parámetros del controlador de ruta sean los objetos request y context.

import { app } from '@azure/functions';
import { HttpRequest, HttpResponseInit, InvocationContext } from '@azure/functions';
import * as vacationService from '../services';

export async function getVacations(request, context) {
    return {
        status: 200,
        jsonBody: vacationService.getVacations(); // Data access logic
    };
};

app.http('get-vacations', {  // API route
    methods: ['GET'],
    route: 'vacations',
    authLevel: 'anonymous',
    handler: getVacations
});

Una vez que comprenda la estructura de la aplicación de Azure Functions, puede organizar el código para que coincida con la estructura de la aplicación original de Node.js Express.

En el ejercicio siguiente, creará la aplicación de Functions y cambiará el código del servidor Express a Functions.