はじめに
例えばユーザー情報を参照・管理するAPI実装時には、次のような要件を満たす処理を1つのCAIプロセスで実装できたら便利ですよね?
- 参照する場合(GET)と、新規登録する場合(POST)で同じCAIプロセスを実行したい
- /user/123という形式簡単で社員情報を参照できるようにCAIプロセスを実行したい
(この例ではusersがAPI名、123が社員番号
)
この記事にて紹介している情報およびディシジョンステップによるによる分岐処理を理解することで上記のような条件に応じた処理を実装できるようになります。
なお、この記事は次の記事の内容を理解していることを前提としています。
リクエストメソッドとResourcePathの取得
リクエストメソッドとは?
HTTP Requestを実行する際にはGETやPOSTというキーワードを指定しますよね。これがリクエストメソッドに該当します。参考までの情報となりますがリクエストメソッドには主に次のようなメソッドがあります。
メソッド | SQL的表現 | 概要 |
---|---|---|
GET | SELECT | リソースの参照 |
POST | INSERT/EXECUTE | リソースの新規作成、処理の要求 |
PUT | UPDATE | リソースの更新(全体の更新) |
PATCH | UPDATE | リソースの更新(一部の更新) |
DELETE | DELETE | リソースの削除 |
ResourcePathとは?
URIは一般的に次のような構造です。
<Scheme>://<HostName>:<PortNumber>/<ResourcePath>?<QueryParameter>
Scheme :通信プロトコル(例、httpやhttps)
HostName :サーバーのアドレス、FQDN
PortNumber :サーバーのポート番号
ResourcePath :サーバー上のリソースの場所
QueryParameter:リソースに対する追加情報
上記のようにURIはスラッシュ(/)で各要素が区切られています。そして、ResourcePathには複数のスラッシュが含まれている場合があります。例えば、IICSのREST API(user)を例にResourcePathを確認してみましょう。
このREST API(user)のResourcePathは saas/api/v2/user
およびsaas/api/v2/user/<id>
およびsaas/api/v2/user/name/<name>
です。これらのREST APIはそれぞれ、ユーザー情報全体を取得したい場合、id情報で情報取得したい場合、名称で情報取得したい場合に使えるだろうと 直感的 に理解できます(APIの利用者が 直感的 に理解できるというポイントが重要)。
CAIプロセスの実装においても、IICSのREST API(user)のように共通するResourcePathを提供して処理を実装できます(リソース指向、RESTful APIに基づいた実装)。
CAIプロセスの実装
次の手順では、リクエストメソッド・ResourcePathを取得するCAIプロセスを作成しています。
-
CAIプロセスを次の設定で作成します。
- 名前を recipe-pca-functionVerbResourcePath とする
- 匿名アクセス を許可する
- クラウドサーバー にデプロイする
-
出力フィールド outVerb,outPath1,outPath2 を タイプ=テキスト として定義します。
-
フィールド 割り当て 値 概要 outVerb 計算式 request:getRequestHTTPVerb() リクエストメソッドを取得 outPath1 計算式 request:getResourcePathSegments()[1] 1つ目のリソースパスを取得 outPath2 計算式 request:getResourcePathSegments()[2] 2つ目のリソースパスを取得
CAIプロセスの実行
CAIプロセスを実行すると、実行時のリクエストメソッドやResourcePathに応じて得られる結果が変わる動作を確認できます。
curl \
https://<IICS・CAIサーバー>/active-bpel/public/rt/<Org ID>/recipe-pca-functionVerbResourcePath
//実行結果
{"outVerb": "GET"}
curl -X POST \
https://<IICS・CAIサーバー>/active-bpel/public/rt/<Org ID>/recipe-pca-functionVerbResourcePath/AAA
//実行結果
{
"outVerb": "POST",
"outPath1": "AAA"
}
curl -X PUT \
https://<IICS・CAIサーバー>/active-bpel/public/rt/<Org ID>/recipe-pca-functionVerbResourcePath/AAA/BBB
//実行結果
{
"outVerb": "PUT",
"outPath1": "AAA",
"outPath2": "BBB"
}
今回はリクエストメソッドやResourcePathの指定値を確認しましたが、ディシジョンステップを使うことで、リクエストメソッドやResourcePathに応じた分岐処理を実装できます。