计划从 Node.js 和 Express 迁移到 Azure Functions

已完成

要计划将后端 Express 应用转移到无服务器,可以将 Express 应用分解为三个主要区域:

  • Express 服务器,主要位于 server.ts 中
  • 路由,位于“routes/”文件夹中
  • 数据访问逻辑,它位于 services/ 文件夹中

为了将代码从 Express 重构到 Azure Functions,你规划了这些操作,并将在下一单元中开始实现:

  1. 创建新的 Azure Functions 应用程序。
  2. 将服务文件夹从 Node.js Express 复制到 Azure Functions 应用。 这会非常有效,因为数据服务并未绑定到 Express 服务器。
  3. 为每个路由终结点创建新的函数 API。
    • 获取假期
    • 添加假期
    • 更新假期
    • 删除假期
  4. 更新函数代码以使用 service/ 文件夹中的数据访问逻辑
  5. 更新函数路由以匹配原始 Express 路由。

快速路由示例

这是一个 Express 路由的简单示例,用于从休假服务获取假期。 请注意,路由处理程序的参数为 reqres 对象。

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 Functions 路由示例

这是一个简单的 Azure Functions 路由处理程序和路由定义示例,用于从休假服务获取假期。 请注意,路由处理程序的参数为 requestcontext 对象。

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 Functions 应用的结构后,可以组织代码以匹配原始 Node.js Express 应用的结构。

在下一个练习中,创建 Functions 应用并将代码从 Express 服务器转移到 Functions。