カスタム処理を利用して、APIのメイン処理に渡すリクエスト値を書き換える
カスタム処理とAPI Pre-processingを使用して、APIのメイン処理に渡すリクエスト値を書き換える方法を紹介します。
カスタム処理を利用することで、下記のような対応ができます。
- ユーザーの入力値を特定の形式に変換した上でAPIに渡す
- 追加の固定値をAPIに渡す
このチュートリアルでは、フォーム送信APIへのリクエスト時にユーザーが入力した全角数字を半角数字に変換する処理を実装します。
カスタム処理を作成する
リクエスト書き換え処理を記述するためのカスタム処理を用意します。
カスタム処理の一覧画面を表示する
サイドメニューより[オペレーション]を選択し、[カスタム処理]をクリックします。
カスタム処理追加画面を表示する
カスタム処理一覧画面の右上の [追加] をクリックします。
タイトル・カテゴリを入力する
カスタム処理のタイトルとカテゴリを入力します。
今回は下記のように入力しました。
- タイトル:/rcms-api/3/inquiry/3/messages/send
- カテゴリ:Pre-processing
- 識別子:sample2_function
同一カテゴリ内にタイトルが重複する処理を作成できないため、実装対象のエンドポイント名など、他と重複しないタイトルを命名してください。
カスタム処理を保存する
一旦ここまでで保存します。 画面下部までスクロールし、[追加する] ボタンをクリックして保存します。
リクエスト値の書き換え処理を記述する
次に、リクエスト値の書き換え処理を記述します。
カスタム処理編集画面を表示する
サイドメニューより[オペレーション]を選択し、[カスタム処理]をクリックします。
先ほど追加したカスタム処理のタイトルをクリックします。
編集画面内のエディタにリクエスト値の書き換え処理を記述していきます。
リクエスト変数を初期化する
リクエスト値を格納するための$request変数を初期化します。
変数名 | 型 | 説明 |
---|---|---|
$request | array | 連想配列 |
エディタに下記記入します。
{* $request = [] *}
{assign_array var="request" values=""}
リクエスト値の書き換え処理を実装する
ユーザーの入力値を変換し、$request変数に変換後の値を代入します。
入力値を参照するためには、下記のいずれかの変数を利用します。
変数名 | 説明 |
---|---|
$smarty.get | クエリパラメータ |
$smarty.post | JSON body |
$smarty.request | クエリパラメータ & JSON body |
入力値の変換には、mb_convert_kanaを利用します。
下記のように追記します。
{assign_array var="request" values=""}
{* [例] POSTされた値の全角数字を半角に書き換える *}
{if isset($smarty.post.ext_01)}
{assign
var="request.ext_01"
value=$smarty.post.ext_01|mb_convert_kana:'n'}
{/if}
保存する
処理の記述が完了したら、[更新する] ボタンをクリックし保存してください。
APIにカスタム処理を関連付ける
次に作成したカスタム処理をAPIに関連付けます。
API一覧画面を表示する
メニューの[API] をクリックし、エンドポイントを作成するAPIの一覧画面を表示します。
エンドポイントを作成する
フォーム送信APIの処理を実装するためのエンドポイントを作成します。
[新しいエンドポイントの追加]をクリックします。
今回は下記のような設定でエンドポイントを作成しました。
親項目 | 子項目 | 値 |
---|---|---|
パス | - | inquiry/3/messages/send |
モデル | カテゴリー | フォーム |
モデル | モデル | InquiryMessage (v1) |
モデル | オペレーション | send |
基本設定 | id | 3 (こちらには送信対象フォームのIDを記述します。 フォームIDはフォーム一覧画面から確認できます) |
記入したら[追加する]をクリックして、エンドポイント作成完了です。
エンドポイントを選択する
API一覧画面より、先ほど作成したエンドポイントの[前処理] ボタンをクリックします。
テーブルの下に、「カテゴリ」と「一覧」プルダウンが表示されます。
カスタム処理を関連付ける
エンドポイントとカスタム処理を関連付けます。
プルダウンより、先ほど作成しておいたカスタム処理のカテゴリとタイトルを選択します。
- カテゴリ:Pre-processing
- コンテンツ:/rcms-api/3/inquiry/3/messages/send
APIの動作を確認する
Swagger UI画面からリクエストを行い、リクエスト書き換え処理の動作を確認します。
API情報画面を表示する
API一覧画面の[Swagger UI]をクリックし、Swagger UI画面を表示します。
エンドポイントを選択する
作成した「/rcms-api/3/inquiry/3/messages/send」エンドポイントをクリックし、[Try it out] ボタンをクリックします。
全角数字を含む値を入力する
[Request body]フィールドが記入できるようになるので、全角数字を含む値を [Request body] に入力します。
今回は "ext_01": "string",
の箇所を下記に修正します。
{
...
"ext_01": "12345",
...
}
入力が完了したら、[Execute] ボタンをクリックし、リクエストを実行します。
リクエストが成功した場合、下記のようなレスポンスが出力されます。
後ほど動作確認で使用するため、ここで発行されたidの数値を控えておいてください。
{
"errors": [],
"messages": [
"新規追加しました。"
],
"id": 2,
"thanks_tag": ""
}
保存された値を確認する
サイドメニューより[キャンペーン] -> [フォーム] の順にクリックし、フォーム一覧画面にアクセスします。
先ほど送信したフォームのタイトルをクリックし、フォーム詳細画面にアクセスします。
[回答] タブを選択し、フォームの回答一覧画面にアクセスします。
[No.] 列より、フォーム送信時に発行されていたidを探し出し、数値のリンクをクリックして回答内容画面にアクセスします。
リクエスト値を上書きした項目を参照し、値が半角数字に書き換わっていることを確認します。
以上でカスタム処理とAPIの関連付けが完了です。
値が書き換わらない場合の確認ポイント
リクエスト値が想定通りに書き換わらない場合は、下記のポイントを確認してください。
- APIのPre-processingとカスタム処理が関連付いているか
- 関連付いているカスタム処理が正しいか
- 変数名(request)が正しいか
- チェック対象の項目名が正しいか
- リクエスト変換処理のロジックが正しいか
サポート
お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。