規劃從 Node.js 和 Express 移轉至 Azure Functions
若要規劃將後端 Express 應用程式移轉至無伺服器,您可以將 Express 應用程式細分為三個主要區域:
- Express 伺服器大多位在 server.ts 中
- 路由,位於 routes/ 資料夾中
- 資料存取邏輯,位於 services/ 資料夾中
若要將程式碼從 Express 重構至 Azure Functions,請規劃這些動作,您會在下一個單元中開始實作:
- 建立新的 Azure Functions 應用程式。
- 將 services 資料夾從 Node.js Express 複製到 Azure Functions 應用程式。 這樣做可行,因為資料服務不會繫結至 Express 伺服器。
- 為每個路由端點建立新的函式 API。
- 取得假期
- 新增假期
- 更新假期
- 刪除假期
- 更新函式程式碼,以在 services/ 資料夾中使用資料存取邏輯。
- 更新函式路由以符合原始的 Express 路由。
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。