Node.js および Express から Azure Functions への移行を計画する
バックエンド Express アプリのサーバーレスへの移行を計画するには、Express アプリを以下の 3 つの主要領域に分解できます。
- Express サーバー (主に server.ts)
- ルート (routes/ フォルダーにあります)
- services/ フォルダー内にあるデータ アクセス ロジック
Express から Azure Functions にコードをリファクターするには、以下のアクションを計画します。これらは次のユニットで実装を開始します。
- 新しい Azure Functions アプリケーションを作成します。
- Node.js Express から Azure Functions アプリに services フォルダーをコピーします。 これが機能するのは、データ サービスが 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 に移行します。