今回は、enebularクラウド実行環境で、アクセスするパスによって分岐する仕組みを体験してみましょう。この仕組みを使えば、ひとつの実行環境で複数のページや複数の機能を載せられるようになります。
たとえば、enebular のクラウド実行環境を sample-1234567890/
という HTTP トリガで作成した場合に
https://lcdp003.enebular.com/sample-1234567890/
といったパスによるアクセスと、https://lcdp003.enebular.com/sample-1234567890/exe1
といった、「/exe1
」を付加したパスによるアクセスで、
動きを変えたいときに重宝します。
クラウド実行環境の準備
過去記事「新リリースのenebularクラウド実行環境の使い方 」の「クラウド実行環境の準備」を参考にクラウド実行環境を準備します。
HTTP トリガー設定
過去記事「クラウド実行環境での HTTP トリガーに設定する重複しない URL をつくる TIPS」を参考にHTTP トリガー設定します。
Discover Flow からフローをインポート
今回のサンプルはこちらです。
こちらをインポートボタンをクリックしてして、対象のプロジェクトを選択してインポートします。
インポート出来たらエディタで開いてみます。
「実行環境のパス名を自動取得」の change ノードをクリックします。
プロパティが開いたら完了ボタンをクリックします。
ノードの右上に青い丸が出てきて、フローを保存可能になります。
右上の保存ボタンをクリックして、フローをデプロイします。
フローの仕組み
まず、LCDP in で入ってきたデータの流れから「実行環境のパス名を自動取得」の名前の change ノードで実行環境のパス名を自動で取得します。もし https://lcdp003.enebular.com/sample-1234567890/
であれば sample-1234567890
の部分です。
req.url で今回アクセスしてきた URL が分かるので、/
(スラッシュ) で split を使って文字を区切って 0 から数えて 1 番目の値を取得します。これで実行環境のパス名が取得できます。
msg.BasePath という値に格納されています。
次に「exe1 と通常の分岐」の名前の change ノードの中で、アクセスしたパスに応じた分岐をしてます。
先ほどの実行環境のパス名 msg.BasePath を使って、それ以下のパスがフォームからのデータ送信である /exe1
のパスか、それ以外の通常アクセスかを区別しています。
/exe1
のパスでサクセスした場合は、こちらのフローに行きます。
「exe1 結果 JSON」という template ノードの中身はシンプルに {"message":"exe1"}
というJSON データを作成し次の LCDP out ノードに伝えることで、 HTTP レスポンスされる流れです。
exe1
以外、つまり https://lcdp003.enebular.com/sample-1234567890/
のようなルートパスなアクセスの場合も含めての流れはこちらです。
「通常結果 JSON」という template ノードの中身はシンプルに {"message":"default"}
というJSON データを作成し次の LCDP out ノードに伝えることで、 HTTP レスポンスされる流れです。
フローのデプロイ
フローをクラウド実行環境に反映します。
過去記事「新リリースのenebularクラウド実行環境の使い方」の「フローのデプロイ方法」を参考に、クラウド実行環境にフローをデプロイします。
HTTP トリガー URL 確認
準備ができたら、 HTTP トリガーの URL にアクセスしてみましょう。enebular のクラウド実行環境に sample-1234567890/
という HTTP トリガを作成したときに https://lcdp003.enebular.com/sample-1234567890/
といったパスです。
この場合 exe1
以外の流れなので、{"message":"default"}
というJSON データがレスポンスされます。
exe1 のパスをつけて確認
つづいて、HTTP トリガーの URL に exe1
をつけてアクセスしてみましょう。enebular のクラウド実行環境に sample-1234567890/
という HTTP トリガを作成したときには https://lcdp003.enebular.com/sample-1234567890/exe1
といったパスです。
この場合 exe1
のパス流れなので、{"message":"exe1"}
というJSON データがレスポンスされます。
発展した仕組みやちょっとした注意点
このように、クラウド実行環境でアクセスするパスによって分岐する仕組みを体験できました。ひとつの実行環境で、複数のページや複数の機能を載せることができるので重宝します。
ただ、あまり複雑に作りすぎると、フローも複雑になっていきます。私がつくるとしたら、おおよそ 5 機能以下であれば 1 つの仕組みでも追えるかなとも思います。自分に合った規模感でうまい塩梅で機能を作りましょう。
最近のブログ記事 「enebular クラウド実行環境で動作するシンプルなフォームの仕組みを作成してみる 」でも活用されているので、発展した使い方が見たい方はぜひ併せてご覧ください!