计划从 Node.js 和 Express 迁移到 Azure Functions
要计划将后端 Express 应用转移到无服务器,可以将 Express 应用分解为三个主要区域:
- Express 服务器,主要位于 server.ts 中
- 路由,位于“routes/”文件夹中
- 数据访问逻辑,它位于 services/ 文件夹中
为了将代码从 Express 重构到 Azure Functions,你规划了这些操作,并将在下一单元中开始实现:
- 创建新的 Azure Functions 应用程序。
- 将服务文件夹从 Node.js Express 复制到 Azure Functions 应用。 这会非常有效,因为数据服务并未绑定到 Express 服务器。
- 为每个路由终结点创建新的函数 API。
- 获取假期
- 添加假期
- 更新假期
- 删除假期
- 更新函数代码以使用 service/ 文件夹中的数据访问逻辑。
- 更新函数路由以匹配原始 Express 路由。
快速路由示例
这是一个 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 Functions 路由示例
这是一个简单的 Azure Functions 路由处理程序和路由定义示例,用于从休假服务获取假期。 请注意,路由处理程序的参数为 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 Functions 应用的结构后,可以组织代码以匹配原始 Node.js Express 应用的结构。
在下一个练习中,创建 Functions 应用并将代码从 Express 服务器转移到 Functions。