積読ハウマッチでAmazonのPAAPIを使っているけど、
v4が2020年3月9日に利用できなくなるため、移行してみたときの備忘録。
公式の移行手順を参考に進める感じ。
認証情報の形式が古いと払い出しが必要らしい
いままで使っていたアクセスキーとシークレットキーでOKだったのでスキップ
以前と同様、Scratchpadが用意されている。
アクセスキーがOKだったかも、ここで確認した。
・Product Advertising API 5.0 Scratchpad
公式ドキュメントにも書いてあるとおり、レスポンスがXMLからJSONになったらしい。
変更点は、ここにまとまっている。
主には、セキュリティ強化、レスポンス速度の改善、新しいAPIの追加など。
また、レスポンスに関してv4からv5へのマッピングも用意されてる。
・PA-API 4.0 to 5.0 Mapping · Product Advertising API 5.0
従来どおり、Web APIを直接叩けるけど、SDKも提供されている。
言語は、Java / Node.js / PHP / Pythonの4つ。サンプルもある。
・Using SDK · Product Advertising API 5.0
ただ、残念なことに、Node.jsのSDKは、zipで公開されている...
zipをダウンロードして展開するとこんな感じになってる。
src配下がAPIなので、自分のソースに配置。
dependencyがあるので、それもコピペして、npm i
する
"dependencies": {
"superagent": "3.5.2",
"crypto-js": "^3.1.9-1"
},
解答したzipにサンプルがあるので、それを見ながら実装していく。
使っているのは検索なので、sampleSearchItemsApi.js
を参照。
以下は、サンプルの抜粋
// ** API Clientの準備
var ProductAdvertisingAPIv1 = require('./src/index');
var defaultClient = ProductAdvertisingAPIv1.ApiClient.instance;
// アクセスキーなどを設定。ホストとかリージョンは、以下を参照
// https://webservices.amazon.com/paapi5/documentation/common-request-parameters.html#host-and-region
defaultClient.accessKey = '<YOUR ACCESS KEY>';
defaultClient.secretKey = '<YOUR SECRET KEY>';
defaultClient.host = 'webservices.amazon.co.jp';
defaultClient.region = 'us-west-2';
// ** リクエストの生成
var searchItemsRequest = new ProductAdvertisingAPIv1.SearchItemsRequest();
// アソシエイトタグを設定
searchItemsRequest['PartnerTag'] = '<YOUR PARTNER TAG>';
searchItemsRequest['PartnerType'] = 'Associates';
// 検索リクエストを設定。SearchIndexは以下を参照
// https://webservices.amazon.com/paapi5/documentation/use-cases/organization-of-items-on-amazon/search-index.html
searchItemsRequest['Keywords'] = 'Harry Potter';
searchItemsRequest['SearchIndex'] = 'Books';
searchItemsRequest['ItemCount'] = 2;
// 取得するレスポンスの指定
// https://webservices.amazon.com/paapi5/documentation/search-items.html#resources-parameter
searchItemsRequest['Resources'] = ['Images.Primary.Medium', 'ItemInfo.Title', 'Offers.Listings.Price'];
// ** コールバックの設定
var callback = function (error, data, response) {
if (error) {
// エラーの場合
console.log('Status Code: ' + error['status']);
} else {
// レスポンスを取得
var searchItemsResponse = ProductAdvertisingAPIv1.SearchItemsResponse.constructFromObject(data);
if (searchItemsResponse['SearchResult'] !== undefined) {
// 1件目の結果を取得
var item_0 = searchItemsResponse['SearchResult']['Items'][0];
if (item_0 !== undefined && item_0['ASIN'] !== undefined) {
console.log('ASIN: ' + item_0['ASIN']);
}
}
// エラーが返ってきた場合
if (searchItemsResponse['Errors'] !== undefined) {
var error_0 = searchItemsResponse['Errors'][0];
console.log('Error Code: ' + error_0['Code']);
console.log('Error Message: ' + error_0['Message']);
}
}
};
// ** APIの実行
var api = new ProductAdvertisingAPIv1.DefaultApi();
try {
api.searchItems(searchItemsRequest, callback);
} catch (ex) {
console.log('Exception: ' + ex);
}
基本的にパラメタがわかったため、一致してるものを探していけばOK。
変更自体はそこまでだけど、できることが変わっているので注意...
とにかく、以下を読みまくった。。
以上!!
積読用の読書管理アプリ 『積読ハウマッチ』をリリースしました!
積読ハウマッチは、Nuxt.js+Firebaseで開発してます!
もしよかったら、遊んでみてくださいヽ(=´▽`=)ノ
要望・感想・アドバイスなどあれば、
公式アカウント(@MemoryLoverz)や開発者(@kira_puka)まで♪
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント