Open2
Cloud Functions と Express のミドルウェア
- Node.js でHTTP ハンドラ関数を作っている
- Express 用のバリデーションライブラリを使いたくなる
- ライブラリはミドルウェアとして使うことになる(必須ではないらしいが)
Express のミドルウェアを渡すようにとのことなのでライブラリで作ったミドルウェアを利用することを自体はよいのだろうけど、実際にやるとなるとどんな感じかなと。
Node.js で、Functions Framework for Node.js を使用して HTTP ハンドラ関数を登録します。HTTP ハンドラ関数は、リクエストとレスポンスの引数を受け入れて HTTP レスポンスを送信する Express ミドルウェア関数である必要があります。
試してみた
サンプルはないかなと探してみたところ firebase-functions
を利用している例があった。大筋はかわらないだろうと思って参考にさせていただく。
とりあえず functions-framework で確認。いちおう動いた。
import * as functions from "@google-cloud/functions-framework";
import express from "express";
const app = express();
const router = express.Router();
app.use(router);
router.get("/", (req, res) => {
res.send("Hello World!");
});
router.get("/test", (req, res) => {
res.send("TEST!");
});
// Register an HTTP function with the Functions Framework
//functions.http("chk1", async (req, res) => {
// res.send("OK");
//});
functions.http("chk1", app);
下記で動かした後に /
と test
でそれぞれの結果がかえってくることは確認できた。
$ npx functions-framework --target=chk1 --signature-type=http
最初、express は個別にインストールしたが functions-framework の依存関係で入っていた(使うならこちらの方がよいのかな)。
➜ workspace git:(master) ✗ npm ls express
templateforv2-static@1.0.0 /project/home/hankei6km/workspace
└─┬ @google-cloud/functions-framework@3.1.3
└── express@4.18.2
(バリデーションのライブラリも含め)実際に使うかは検討中。