Планирование миграции с Node.js и Express в Функции Azure

Завершено

Чтобы спланировать переход серверного приложения Express на бессерверный, можно разбить приложение Express на три основных области:

  • Сервер Express, основная часть которого находится в файле server.ts
  • Маршруты, которые находятся в маршрутах или папке
  • Логика доступа к данным, которая находится в службах или папках

Чтобы рефакторинг кода из Express в Функции Azure, вы планируете эти действия, которые начнут реализовываться в следующем уроке:

  1. Создайте приложение Функции Azure.
  2. Скопируйте папку служб из Node.js Express в приложение Функции Azure. Это работает, так как службы данных не привязаны к серверу Express.
  3. Создайте API-интерфейс функции для каждой конечной точки маршрута.
    • Получение отпусков
    • Добавление отпусков
    • Обновление отпуска
    • Удаление отпуска
  4. Обновите код функции, чтобы использовать логику доступа к данным в службах или папках.
  5. Обновите маршруты функций, чтобы соответствовать исходным маршрутам Express.

Пример express route

Это простой пример маршрута Express, который получает отпуск от службы отпуска. Обратите внимание, что параметры обработчика маршрутов являются req объектами и 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
});

Пример маршрута Функции Azure

Это простой пример обработчика маршрутов Функции Azure и определения маршрута, который получает отпуск от службы отпуска. Обратите внимание, что параметры обработчика маршрутов являются request объектами и 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
});

После понимания структуры приложения Функции Azure можно упорядочить код для сопоставления структуры исходного приложения Node.js Express.

В следующем упражнении вы создадите приложение "Функции" и переместите код с сервера Express на функции.