急にエラーログのサイズが増えたと思ったら、Yahoo!ショッピングの商品検索APIが変更になっていた

急にエラーログのサイズが増えたと思ったら、Yahoo!ショッピングの商品検索APIが変更になっていた

急にエラーログのサイズが増えたと思ったら、Yahoo!ショッピングの商品検索APIが変更になっていた

こういうの気付かなきゃダメです。現在反省しきりです。

今月に入ってから、エラーログのサイズが急に増えている事には気づいていたのですが、日々改善する中での一時の増加だと思いこんでました。
具体的には、GoogleAPI使ってsearchWordとか取ってこようと画策していて、これを作成している最中なのでエラーが増えていると思ってたんです。

でも、原因はタイトルの通り『Yahoo!ショッピングの商品検索API』が変わっていた事。
エンドポイントが変わってるので、そりゃエラー吐くしデータ取れないわな。

Yahoo!ショッピング商品検索APIの具体的な変更点

  1. エンドポイントの変更
  2. JAN検索時のPOST名変更
  3. いくつかのPOST値が無くなった
  4. 帰ってくる値の数が増えた
  5. データ構造の変更

ざっくりとまとめると、こんな感じ。
簡単になって、取れる値が増えて、反応も速くなった気がします。

エンドポイントの変更

旧:https://shopping.yahooapis.jp/ShoppingWebService/V1/json/itemSearch

新:https://shopping.yahooapis.jp/ShoppingWebService/V3/itemSearch

V1からV3に変わりました。
そして、V1では3種類あった提供する配列の形がV3ではJSONのみになりました。

JAN検索時のPOST名変更

エンドポイントが変わっただけかと思いここだけ変えて動かしてみても動かない。
理由はJANコードのPOST名の変更でした。

jan —> jan_code

うん、全然違うから動け言われても動くわけがないですね。
jan_codeにするとあっさりと動作してくれました。

いくつかのPOST値が無くなった

仕様書を見比べてみると消えた項目がある事に気づきます。

  • hits
  • offset
  • module
  • availability など

私が個人的に警戒したのは『availability』これ、在庫の有無を分けるマーカーだったのですが、V3では抽出条件から外れてしまいました。
でも、よく見ていくと新項目『in_stock』が在庫有無Flagだったりなど名前が変わったものがいくつもありました。

私はLibrary に格納して使うときに呼び出しているのでいいのですが、全部Controllerに書いてる人いたら泣けてくる変更です。

データ構造の変更

単純にresponseフィールドの構造が分かりやすくなりました。

具体的には、3階層目に存在していた商品検索の個別結果が2階層目に引き上げられ、foreachの階層が減少しました。

帰ってくる値の数が増えた

最もうれしかったのはこれかな。
ライバル会社の情報(レビュー数とか)も商品検索APIで返ってくる。

まぁ今はそこまで作ってないですけど、要望ありそうな項目なので機会あったら弄ってみようかなと思います。

まとめ

結構な工数掛かるかなと思ったのですが、1時間もかからず変更できました。

総じて使い易く理解しやすくなった感じです。
楽天が仕様変更すると必ずグチャグチャするのですが、こういう所はさすがIT覇者のソフトバンクグループ。構築がうまい。

さぁ、デモページも作り変えなきゃ。