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

Apigeeで変数を記憶する

Posted: 2018-02-25


スポンサーリンク

目次

背景

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