メインコンテンツまでスキップ

関連情報選択で選択したコンテンツの全情報をレスポンスに追加するにはどうしたら良いですか?

レスポンスされた関連情報のIDから対象のコンテンツの情報を取得して、エンドポイントのレスポンスに追加するカスタム処理を作成し、エンドポイントの後処理に設定することで対応ができます。

カスタム処理の設定

カスタム処理編集の画面から以下のコードを設定したカスタム処理を作成します。

備考

以下のコードはext_1の項目に関連情報選択を設定している前提として書いています。
ご自身の設定に合わせて調整ください。

module_typeがtopicsの場合

{*  エンドポイント設定パラメータ *}
{assign_array var='method_params' values=''}
{assign var='method_params.topics_id' value=$json.details.ext_1.module_id}
{api_method
var='response'
model='Topics'
method='details'
version='1'
method_params=$method_params}

{append var='json.details.ext_1' value=$response.details index='details'}
{assign var='processed_json' value=$json}

module_typeがmemberの場合

{*  エンドポイント設定パラメータ *}
{assign_array var='method_params' values=''}
{assign var='method_params.member_id' value=$json.details.ext_1.module_id}
{api_method
var='response'
model='Member'
method='details'
version='1'
method_params=$method_params}

{append var='json.details.ext_1' value=$response.details index='details'}
{assign var='processed_json' value=$json}

module_typeがformの場合

{*  エンドポイント設定パラメータ *}
{assign_array var='method_params' values=''}
{assign var='method_params.inquiry_id' value=$json.details.ext_1.module_id}
{api_method
var='response'
model='InquiryForm'
method='details'
version='1'
method_params=$method_params}

{append var='json.details.ext_1' value=$response.details index='details'}
{assign var='processed_json' value=$json}

エンドポイントの後処理に設定

追加したカスタム処理を対象のエンドポイントの後処理に設定します。

Image from Gyazo

動作確認

エンドポイントのレスポンスをSwagger UIで確認すると、以下のように、ext_1の下にdetailsという項目名で紐づけられた関連情報の詳細が追加されていることが分かります。

Image from Gyazo

listのエンドポイントの場合

Topics::listのエンドポイントの場合は、以下のコード例になります。

{assign_array var='empty_array' values=""}
{assign var='empty_object' value=$empty_array|@to_object}

{foreach from=$json.list key=key item=details}
{assign var='topics_id' value=$details.ext_1.module_id}
{assign var='module_type' value=$details.ext_1.module_type}
{assign var='details.ext_1' value=$empty_object}
{if $topics_id && $module_type == "topics"}
{* エンドポイント設定パラメータ *}
{assign_array var='method_params' values=''}
{assign var='method_params.topics_id' value=$topics_id}
{api_method
var='response'
model='Topics'
method='details'
version='1'
method_params=$method_params}
{append var='details' value=$response.details index='ext_1'}
{/if}
{assign_array_set var="json.list" key=$key value=$details from=$json.list}
{/foreach}


{assign var='processed_json' value=$json}

関連ドキュメント


サポート

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。