13
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

インフォマティカ・ジャパン株式会社Advent Calendar 2024

Day 4

[CAIレシピ] CAIプロセス実行時のリクエストメソッド(GET, POSTなど)やResourcePathを取得する

Last updated at Posted at 2024-12-19

はじめに

例えばユーザー情報を参照・管理する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は一般的に次のような構造です。

URIの構造
<Scheme>://<HostName>:<PortNumber>/<ResourcePath>?<QueryParameter>

Scheme        :通信プロトコル(例、httpやhttps)
HostName      :サーバーのアドレス、FQDN
PortNumber    :サーバーのポート番号
ResourcePath  :サーバー上のリソースの場所
QueryParameter:リソースに対する追加情報

上記のようにURIはスラッシュ(/)で各要素が区切られています。そして、ResourcePathには複数のスラッシュが含まれている場合があります。例えば、IICSのREST API(user)を例にResourcePathを確認してみましょう。
image.png

この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プロセスを作成しています。

  1. CAIプロセスを次の設定で作成します。

    • 名前を recipe-pca-functionVerbResourcePath とする
    • 匿名アクセス を許可する
    • クラウドサーバー にデプロイする
  2. 出力フィールド outVerb,outPath1,outPath2タイプ=テキスト として定義します。

  3. 割り当てステップを選択して、次のように設定します。
    image.png

    フィールド 割り当て 概要
    outVerb 計算式 request:getRequestHTTPVerb() リクエストメソッドを取得
    outPath1 計算式 request:getResourcePathSegments()[1] 1つ目のリソースパスを取得
    outPath2 計算式 request:getResourcePathSegments()[2] 2つ目のリソースパスを取得

CAIプロセスの実行

CAIプロセスを実行すると、実行時のリクエストメソッドやResourcePathに応じて得られる結果が変わる動作を確認できます。

シンプルなGETリクエスト
curl \
https://<IICS・CAIサーバー>/active-bpel/public/rt/<Org ID>/recipe-pca-functionVerbResourcePath

//実行結果
{"outVerb": "GET"}
POSTリクエスト+ResourcePathを追加した実行
curl -X POST \
https://<IICS・CAIサーバー>/active-bpel/public/rt/<Org ID>/recipe-pca-functionVerbResourcePath/AAA

//実行結果
{
    "outVerb": "POST",
    "outPath1": "AAA"
}
POSTリクエスト+ResourcePathを2つ追加した実行
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に応じた分岐処理を実装できます。

参照

13
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?