ログインユーザーの情報でAPIのレスポンスを動的に変更する
ログインユーザーの情報を使用して、APIエンドポイントのレスポンスを動的に変更する方法を解説します。
本チュートリアルでは、以下の構成で、ログインユーザーによってお知らせ一覧の表示内容を変更してみます。
- メンバー拡張に会社名を追加する
- コンテンツ(お知らせ)にターゲットの会社を追加する
- ログインユーザーの情報をフィルタークエリに設定するカスタム処理を追加する
- エンドポイントにフィルターリクエストの許可と前処理の設定をする
メンバー拡張に会社名を追加する
[メンバー管理]->[メンバー]をクリックします。
[メンバー詳細設定]をクリックします。
[登録されるメンバーの拡張項目を設定する]をクリックします。
以下のように設定し、[更新する]をクリックします。
項目 | 設定 |
---|---|
項目名 | 会社名 |
識別子 | company_id |
設定 | 単一選択 |
1::株式会社A 2::株式会社B |
メンバー一覧のページから、動作確認用メンバーの名前をクリックします。
メンバー編集ページが表示されるのでプロフィール情報のタブで会社名をセットします。
コンテンツ(お知らせ)にターゲットの会社を追加する
[コンテンツ定義]をクリックします。
コンテンツ定義一覧から[お知らせ]をクリックします。
コンテンツ定義編集画面が開くので、下記のように設定し、[更新する]をクリックします。
項目 | 設定 |
---|---|
親項目 | 選択なし |
項目名 | ターゲット |
項目設定 | 複数選択可 |
1::株式会社A 2::株式会社B 3::株式会社C |
コンテンツ編集画面に追加した項目が表示されるので、任意のコンテンツの編集画面でターゲットとなる会社名にチェックを入れて更新します。
ログインユーザーの情報をフィルタークエリに設定するカスタム処理を追加する
次にログインユーザーの情報を取得するカスタム処理を追加します。
[カスタム処理]をクリックします。
[追加]をクリックします。
以下を設定し、[追加する]をクリックします。
項目 | 設定 |
---|---|
タイトル | ログインユーザーの情報をフィルタクエリに追加 |
識別子 | set_filter_request |
処理 | 以下のコード |
{if $smarty.session.super_flg ne 1}
{assign_member_detail var='mem' member_id=$smarty.session.member_id}
{assign var=request.filter value="ext_1 contains `$mem.company_id_key`"}
{/if}
filterパラメータの記法詳細は検索機能の使い方を参照してください。
エンドポイントにフィルターリクエストの許可と前処理の設定をする
お知らせのリストを取得するエンドポントを持つAPIをクリックします。
お知らせのリストを取得するエンドポントの[更新]をクリックします。
filter_request_allow_list
のパラメータにext_1
を入力して、[更新]をクリックします。
次に[前処理]をクリックします。
カテゴリを未分類にし、一覧から「ログインユーザーの情報をフィルタクエリに追加」を設定します。
動作を確認する
最後に動作確認をします。 ログイン後、お知らせ一覧のページを確認すると、表示される一覧の内容がフィルタリングされていることがわかります。
動作確認はSuwagger UIで確認ができませんので、ブラウザ上で確認をするようにしてください。
参考FAQ:SwaggerUIで確認できないリクエストがあります。確認する方法はありますか?
サポート
お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。