Apigeeで変数を記憶する | 瀬戸内の雲のように

Apigeeで変数を記憶する

Posted: 2018-02-25


スポンサーリンク

目次

  • 背景
  • Key Value Map(KVM) Policyとは?
  • Key Value Maps の使い方
    • Key Value Map の読込

      背景

      Apigeeは基本的にフロー(1リクエスト/1レスポンス)に完結して処理が行われます。ですので、複数のフローに渡って情報を受け渡しする場合や同じIPアドレスから連続で来た場合に処理を行う、といったことをやりたい場合には工夫が必要です。

      そんな時はKey Value Map Policyを使えば実現できます。

      Key Value Map(KVM) Policyとは?

      その名の通りですが、キー(名前)バリュー(値)のペアで変数を保存する機能です。
      例えば、Apigeeを使ってユーザ情報を管理するAPIを作りたいと考えた時、以下のような変数を用意すれば実現できます。

      Key Value
      Ken Male,30,Engineer
      Taro Male,25,Sales
      Hanako Female,23,Sales

       
      実際の画面はこちら

      この画面は以下の手順で確認/作成できます。

      APIs => Environment Configuration => Key Value Maps
      

      この画面中の + Key Value Map ボタンを押せば変数が追加できます。

      次にこのKVMを使うポリシーを実際に見てみます。

      Key Value Maps の使い方

      Key Value Mapsの操作にはKey Value Map Operationsというpolicyを使います。
      今回は読込/書込の方法を記載したいと思います。

      Key Value Map の読込

      まず、先程設定したKVMを読み出すポリシーを設定します。

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="get_user_info" mapIdentifier="user_info">
          <DisplayName>get_user_info</DisplayName>
          <ExpiryTimeInSecs>-1</ExpiryTimeInSecs>
          <Get assignTo="sex" index="1">
              <Key>
                  <Parameter ref="username"/>
              </Key>
          </Get>
          <Get assignTo="age" index="2">
              <Key>
                  <Parameter ref="username"/>
              </Key>
          </Get>
          <Get assignTo="job" index="3">
              <Key>
                  <Parameter ref="username"/>
              </Key>
          </Get>
          <Scope>environment</Scope>
      </KeyValueMapOperations>
      

      このようにすれば変数usernameに格納された名前にヒットするユーザの情報を取得することができます。

      なお、このポリシーを適用するよりも前のフローでusername変数を定義しておく必要があります。(ExtractVariablesポリシー等を使えばできます。)

      Key Value Mapの書き込み

      次にこの変数の更新の方法です。

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="update_user_info" mapIdentifier="user_info">
          <DisplayName>update_user_info</DisplayName>
          <Put override="true">
              <Key>
                  <Parameter ref="username"/>
              </Key>
              <Value ref="sex"/>
              <Value ref="age"/>
              <Value ref="job"/>
          </Put>
          <Scope>environment</Scope>
      </KeyValueMapOperations>
      

      このように書けば、変数usernameでヒットしたKeyValueMapの情報を、現在持っているsex age job の情報で更新します。

      特に、

      <Value ref="sex"/>
      <Value ref="age"/>
      <Value ref="job"/>
      

      の部分は、この順番でindex(カンマ区切りの順番)が決まるので、注意する必要があります。

      以上、apigeeを使う上でよく出てくるKVMの使い方でした。


      スポンサーリンク




      コメント一覧


      コメントを投稿する


      お名前


      コメント内容





      TOP back