やはり、BrowseNodeLookupRequest、BrowseNodeLookupResponseでぱんくずリスト用のデータを取得するのは現実的ではなさそうだ。
そもそも、このリクエストで得られる情報ってノード名くらいの物だ。
たった、これだけの情報を得る為に1リクエスト無駄には出来ない。
といわけで、私のサイトではBrowseNodeLookupは「ぱんくずリスト」の下に表示する予定のサブカテゴリを得る為だけに使用することにした。
さて、「パンくずリスト」のデータ取得方法を改めて考え直さなければならない。
何かのついでに取得できたら一番よいのだが、、、
ItemクラスはBrowseNodesプロパティを持っているようなのでItemを含んで返すオペレーションが無いか調べてみた。
・ItemLookupRequest、ItemLookupResponse
ISBNなどのユニークキーを元にItem(商品の詳細情報)を返すオペレーション
・ItemSearchRequest、ItemSearchResponse
検索条件に応じてItemの一覧を返すオペレーション
結果、両方ともItemのBrowseNodesプロパティには値がセットされた形で返ってきており、しかもAncestorsプロパティを辿っていくと、ルートノードまでの情報を全て含んでるじゃないですか!
これは使える、、、
視覚的に書くと、その商品に関連するカテゴリーが下記のような形で取得できる。
ジャンル別 > J-POP > ロック
ジャンル別 > J-POP > アーティスト別 > あ行
あくまでも、その商品に対する関連ジャンルなので殆どの場合2件以上の情報が取得されるのだが、どれを表示するべきか?といった処理はゴリゴリとロジックを書く必要がある。
まとめると、検索結果などから、ついでに「パンくずリスト」を作成できるので、リクエストを減らすことが出来たという事になるのかな?
この手法にも若干の問題があるのだが、まあ、概ねちゃんと動いてるみたいなので、これでよしとしよう。