開発者向けサポート

ビューアドオンAPI

ビューアドオンAPIを使用することにより、Appsで編集した値をテンプレートに出力、また制御することができます。
このAPIを利用した実例について、 Apps活用事例 にて掲載しておりますので、こちらの内容と併せてご覧いただけますと幸いです。

以下、ビューアドオンAPIの使用方法について説明します。

ビューアドオンAPIの呼び出し方

まず、ビューアドオンAPIを使用する場合には、Appsの管理画面でビューアドオンルートURIを設定する必要があります。
例えばAppsコードSAMPLE_APP_CDであるAppsのビューアドオンルートURIとして「http://sample.co.jp/api/view/」を指定します。

そして、ビューアドオンAPIを使用するテンプレートのhtmlタグに以下のように属性を追加する必要があります。

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:m="http://mayaa.seasar.org" xml:lang="ja" lang="ja"
 xmlns:sample="eb:SAMPLE_APP_CD/view_common.json">

※SAMPLE_APP_CD:Appsコード、sample:テンプレート内で用いる定義名

上記のような定義をすると、テンプレートを開いた際に以下のURIでAppsを呼び出します。
「http://sample.co.jp/api/view/view_common.json」
そして、Appsからの返却値を使ってテンプレート内に記述された処理を行います。

ビューアドオンAPIのバージョン

ビューアドオンAPIはhttpヘッダにX-EBISU-VIEWADDON-API-RESPONSE-VERSIONを指定することでバージョン指定ができます。
ver2以上が指定された場合、レスポンスのデータ構造が変わりクッキー情報とセッション情報を保存することができます。

ver1、もしくはバージョン未指定のレスポンス

レスポンスのサンプルは以下の通りです。

{
   "MESSAGE":"メッセージ"
}
ver2以上のレスポンス

Appsでの処理を完了したのち、JSON形式で以下の内容をレスポンスボディに入れてください。

result
処理結果です。
session
セッションに格納する情報。ここで指定した情報は、同一セッション内で呼び出される処理カスタマイズAPI呼び出しのリクエストに格納されます。
cookies
クッキーに格納する情報。nameは「Appsコード:」から始まるの文字列を指定してください。
isHttpOnly
httponly属性を付与する場合trueを指定してください。未指定の場合、httponly属性を付与しません。
isSecure
secure属性を付与する場合trueを指定してください。未指定の場合、secure属性を付与しません。
maxAge
Set-Cookieヘッダ > Expiresに指定するクッキーの残存時間を秒単位で指定してください。未指定の場合、Expiresを指定しません。
name
Cookieのnameを指定してください。どのAppsでセットされたCookieかを特定するために「Appsコード:」から始まる文字列を指定してください。
value
CookieのValueを指定してください。

レスポンスのサンプルは以下の通りです。

{
   "result": {
      "MESSAGE": "メッセージ"
   },
   "cookies": [
      {
         "isHttpOnly": false,
         "isSecure": false,
         "maxAge": 3600,
         "name": "Appsコード:KEY1",
         "value": "VALUE1"
      }
   ],
   "session": {
      セッション情報
   }
}

テンプレート内で使用可能な定義と使用方法

テンプレート内で以下の定義が使用可能です。

  • write:本文の出力
  • attr:属性値の出力
  • loop:繰り返し
  • if:条件分岐

以下、各定義についてApps側で返す値と、テンプレートの記述方法を例示します。

write

Appsが返すJSON

{
   "MESSAGE": "メッセージ"
}

テンプレートに記述する内容

<p><div sample:write="MESSAGE"></div></p>

最終的に出力されるHTML

<p>メッセージ</p>
attr

Appsが返すJSON

{
   "ORDER_NO": {
     "value": "ORDER-1"
   }
}

テンプレートに記述する内容

<input type="hidden" name="cd" sample:attr="ORDER_NO" />

最終的に出力されるHTML

<input type="hidden" name="cd" value="ORDER-1" />
if

Appsが返すJSON

{
   "FLAG1": true,
   "FLAG2": false,
   "MESSAGE1": "メッセージ1",
   "MESSAGE2": "メッセージ2"
}

テンプレートに記述する内容

<div sample:if="FLAG1"><p><div sample:write="MESSAGE1"></div></p></div><div sample:if="FLAG2"><p><div sample:write="MESSAGE2"></div></p></div>

最終的に出力されるHTML

<div><p>メッセージ1</p></div>

※FLAG2の部分が表示されなくなります。

loop

Appsが返すJSON

{
   "MESSAGE_LIST": [
     {
       "MESSAGE": "メッセージ1"
     },
     {
       "MESSAGE": "メッセージ2"
     }
   ]
}

テンプレートに記述する内容

<div sample:loop="MESSAGE_LIST"><p><div sample:write="MESSAGE"></div></p></div>

最終的に出力されるHTML

<div><p>メッセージ1</p></div><div><p>メッセージ2</p></div>
ebisumartからAppsへ送られるリクエスト

ebisumartからAPIを呼び出す時には、リクエストボディにJSON形式で以下の情報が送られます。

context
次の情報が送られます。
member_id
現在ログイン中の会員のIDです。会員ログイン中の場合にのみ値が設定されます。それ以外の場合はnullとなります。
member_rank
現在ログイン中の会員の会員ランクNoです。会員ランクオプションを利用している店舗において、会員ログイン中の場合にのみ値が設定されます。それ以外の場合はnullとなります。
request
ブラウザから送られてきたリクエストパラメーター「request」の値です。その画面において行う処理の種類に応じた文字列(例えば検索時は「search」、編集時は「edit」など)が入ります。
shop_id
店舗を一意に特定するID(ebisumartNo)が入ります。
request_root_url
リクエストのルートURLです。通常はドメイン部分になります。本番ドメインが使用される前だと、ドメイン(service.ebisumart.com等)/店舗Noの値が送れられます。
template_name
現在処理中のテンプレートファイルのパスが入ります。例:"/client_info/V4-LECTURE01/view/userweb/top.xhtml"
page
現在処理中のページのパスが入ります。例:"/item/ITEM1.html"
is_preview_mode
プレビューモードか否かが送付されます。ショップ管理画面の「プレビューを確認」ボタン経由で表示している場合はtrueとなります。ショップ管理画面の「ビューを確認」ボタン経由で表示している場合、およびショップ管理画面を経由せずに直接表示している場合はfalseとなります。
is_vpc
trueが設定されます。互換性を保つために設定されているパラメータになります。
※現在利用していないパラメータの為、利用しないでください。
parameters
ページごとに定められたパラメータが送られます。
詳細は ページごとに使用できるパタメータ一覧 を参照してください
cart
その時点でカートに入っている商品の情報です。
session
同一セッション内にて、以前の処理カスタマイズAPI呼び出しのレスポンスで指定したセッション情報がある場合、その情報を表すマップが入ります。
requestAttr
同一リクエスト内にて、以前の処理カスタマイズAPI呼び出しのレスポンスで指定したリクエストスコープの情報がある場合、その情報を表すマップが入ります。
requestParams
リクエストパラメータの情報です。「Appsコード:」で始まるパラメータのみが送られます。

具体的に渡されてくるデータのサンプルは以下の通りです。

{
   "cart": [
      {
         "ADD_POINT": null,
         "ADD_POINT_RATE": null,
         "DISCOUNT_FLG": null,
         "FREE_ITEM1": null,
         "ITEMPROPERTY_LIST": "0",
         "ITEM_CD": "ITEM1",
         "ITEM_ID": 4,
         "ITEM_IMAGE1": "ITEM1/ITEM1.jpg",
         "ITEM_IMAGE2": null,
         "ITEM_IMAGE3": null,
         "ITEM_IMAGE4": null,
         "ITEM_ITEMPROPERTY_CD": "ITEM1",
         "ITEM_NAME": "商品1",
         "MAKER_TEIKA": null,
         "MAX_QUANTITY": null,
         "MEMBER_WARIBIKI": null,
         "MIN_QUANTITY": null,
         "M_ITEM_IMAGE1": null,
         "M_ITEM_IMAGE2": null,
         "M_ITEM_IMAGE3": null,
         "M_ITEM_IMAGE4": null,
         "ORDER_QUANTITY_LIMIT": null,
         "POINT_FLG": null,
         "QUANTITY": 1,
         "SALE_DATE": null,
         "SORYO_FREE_FLG": null,
         "TEIKA": 100,
         "TEIKI_FLG": null,
         "ZAIKO_DISP_FLG": null
      }
   ],
   "context": {
      "member_id": "3",
      "member_rank": null,
      "page": "/",
      "request": null,
      "shop_id": "V4-LECTURE01",
      "template_name": "/client_info/V4-LECTURE01/view/userweb/top.xhtml"
   },
   "session": {},
   "requestAttr": {},
   "requestParams": {}
}

免責事項

免責事項については こちら をご参照ください。

ここを見た方は他にもこんなページを見ています。