Node.js および Express から Azure Functions への移行を計画する

完了

バックエンド Express アプリのサーバーレスへの移行を計画するには、Express アプリを以下の 3 つの主要領域に分解できます。

  • Express サーバー (主に server.ts)
  • ルート (routes/ フォルダーにあります)
  • services/ フォルダー内にあるデータ アクセス ロジック

Express から Azure Functions にコードをリファクターするには、以下のアクションを計画します。これらは次のユニットで実装を開始します。

  1. 新しい Azure Functions アプリケーションを作成します。
  2. Node.js Express から Azure Functions アプリに services フォルダーをコピーします。 これが機能するのは、データ サービスが Express サーバーに紐づけられていないためです。
  3. ルート エンドポイントごとに新しい関数 API を作成します。
    • 休暇を取得する
    • 休暇を追加する
    • 休暇を更新する
    • 休暇を削除する
  4. services/ フォルダー内のデータ アクセス ロジックを使用するように関数コードを更新します。
  5. 元の 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 に移行します。