Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8963

Amazon Product Advertising API 5.0(PA-API v5)をexpressでREST API化する

$
0
0

概要

Amazon Product Advertising API 5.0 というAmazonが提供している商品情報検索APIがあります。
SDKが公式から提供されているのですが、サンプルコードのままだとコード内でASINやキーワードを指定するためAPIを単発でしかコールできないため、expressでREST APIとして動作するようにしました。

リポジトリ:https://github.com/sakatech-jp/paapi5-express-sample

【参考】
Product Advertising API 5.0 Documentation
Product Advertising API 5.0 SDK for NodeJS

前提条件

  • Amazonアソシエイト・プログラムに承認されたアカウントを所持している
  • 認証キーを発行している
  • Node.jsが実行できる

使用方法

実行環境

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.6
BuildVersion:   19G2021

$ node -v
v14.1.0

$ docker -v
Docker version 19.03.12, build 48a66213fe

セットアップ

クローンまたはフォークして依存パッケージをインストールします。

$ git clone https://github.com/sakatech-jp/paapi5-express-sample.git
$ cd paapi5-express-sample
$ npm install

config.js内に認証キーとアソシエイトタグを設定します。

module.exports={ACCESS_KEY:'<YOUR ACCESS KEY>',// アクセスキーをセットSECRET_KEY:'<YOUR SECRET KEY>',// シークレットキーをセットAPI_HOST:'webservices.amazon.co.jp',REGION:'us-west-2',PARTNER_TAG:'<YOUR PARTNER TAG>',// アソシエイトタグをセットPARTNER_TYPE:'Associates'}

app.jsを実行することでAPIを立ち上げることができます。

$ node app.js
Listening to PORT: 3000

エンドポイント

以下の4つのエンドポイントがあります。

/searchItems

検索条件から商品データを取得することができます。

/getItems

指定したASINを持つ商品の情報を取得することができます。

/getVariations

指定したASINを持つ商品のバリエーション(サイズや色など)を取得することができます。

/getBrowseNodes

指定した商品カテゴリの情報を取得することができます。

リクエストとレスポンスのサンプル

各エンドポイントへのリクエストのサンプルとそれに対するレスポンスです。

/searchItems

「Node.js」でキーワード検索をしてみます。

$ curl -X GET localhost:3000/searchItems \-d'{
    "Keywords": "Node.js",
    "Resources": ["Images.Primary.Medium", "ItemInfo.Title", "Offers.Listings.Price"],
    "ItemCount": 1
   }'

「Node.js超入門[第3版]」という書籍の情報が返ってきます。

{"SearchResult":{"TotalResultCount":146,"SearchURL":"https://www.amazon.co.jp/s?k=Node.js&rh=p_n_availability%3A-1&tag=***&linkCode=osi","Items":[{"ASIN":"B08HRMTXHB","DetailPageURL":"https://www.amazon.co.jp/dp/B08HRMTXHB?tag=***&linkCode=osi&th=1&psc=1","Images":{"Primary":{"Medium":{"URL":"https://m.media-amazon.com/images/I/51SoAyWCBdL._SL160_.jpg","Height":160,"Width":124}}},"ItemInfo":{"Title":{"DisplayValue":"Node.js超入門[第3版]","Label":"Title","Locale":"ja_JP"}},"Offers":{"Listings":[{"Id":"rnBB%2BZKboyhEDyET8hzwlpvGBT%2FHZ%2BfRAoEtE4FR6i7%2Bv%2B5YeQ1ap7PjpdIUPxEugDBSHdeZavd6BbESDvgw6Q6zLIAPCpYKOoboMSZgkd6bu1zutQ5byVmg55svmhuJlopqxFxF3WQs4aCICTPDPUWEokDz1%2Fj%2FJgC3VYcQoodSEWsCS1Zu0A%3D%3D","Price":{"Amount":3168,"Currency":"JPY","DisplayAmount":"¥3,168"},"ViolatesMAP":false}]}}]}}

/getItems

「B08HRMTXHB」というASINを持つ商品の情報を取得してみます。

$ curl -X GET localhost:3000/getItems \-d'{
    "ItemIds": ["B08HRMTXHB"],
    "Resources": ["Images.Primary.Medium", "ItemInfo.Title", "Offers.Listings.Price"]
   }'

Node.js超入門[第3版]」という書籍の情報が返ってきます。

{"ItemsResult":{"Items":[{"ASIN":"B08HRMTXHB","DetailPageURL":"https://www.amazon.co.jp/dp/B08HRMTXHB?tag=***&linkCode=ogi&th=1&psc=1","Images":{"Primary":{"Medium":{"URL":"https://m.media-amazon.com/images/I/51SoAyWCBdL._SL160_.jpg","Height":160,"Width":124}}},"ItemInfo":{"Title":{"DisplayValue":"Node.js超入門[第3版]","Label":"Title","Locale":"ja_JP"}},"Offers":{"Listings":[{"Id":"2QzP8U6GS%2BOE3G8ybPwm1FbqJ8V%2Fh6jc24%2Bmw%2FeCFpItFscuzkMg8wE5rhC%2BVJ4bttattXONPnhLtfj%2BI2UQiM3rvFpB7SIcX3YozDc9Gb1UjeyINE%2Btn0Vl%2BdI8hjNwvDExYbcO5QCSnqCcxs%2BwuKUam5dl5tXoc6syYJ3Blv0xxDt6RyoiaA%3D%3D","Price":{"Amount":3168,"Currency":"JPY","DisplayAmount":"¥3,168"},"ViolatesMAP":false}]}}]}}

/getVariations

いろはすのペットボトルのASINである「B0026IAWMU」で情報を取得してみます。

$ curl -X GET localhost:3000/getVariations \-d'{
    "ASIN" : "B0026IAWMU"
   }'

24本と48本の2種類が返ってきます。

{"VariationsResult": {"Items": [{"ASIN": "B0026IAWMU",
                "DetailPageURL": "https://www.amazon.co.jp/dp/B0026IAWMU?tag=***&linkCode=ogv&th=1&psc=1",
                "ItemInfo": {"Title": {"DisplayValue": "コカ・コーラ い・ろ・は・す 天然水 555mlPET×24本",
                        "Label": "Title",
                        "Locale": "ja_JP"}},
                "VariationAttributes": [{"Name": "size_name",
                        "Value": "1) 555ml×24本"}]},
            {"ASIN": "B007B9T4UK",
                "DetailPageURL": "https://www.amazon.co.jp/dp/B007B9T4UK?tag=***&linkCode=ogv&th=1&psc=1",
                "ItemInfo": {"Title": {"DisplayValue": "I LOHAS(い・ろ・は・す) いろはす 555ml×24本×2ケース",
                        "Label": "Title",
                        "Locale": "ja_JP"}},
                "VariationAttributes": [{"Name": "size_name",
                        "Value": "555mlx48本"}]}],
        "VariationSummary": {"PageCount": 1,
            "VariationCount": 2
        }}}

/getBrowseNodes

商品カテゴリID「2275256051」の情報を取得してみます。

$ curl -X GET localhost:3000/getBrowseNodes \-d'{
    "BrowseNodeIds": ["2275256051"]
   }'

「Kindle本」というカテゴリ情報が返ってきます。

{"BrowseNodesResult":{"BrowseNodes":[{"ContextFreeName":"Kindle本","DisplayName":"Kindle本","Id":"2275256051","IsRoot":false}]}}

指定できるパラメータについて

上記のサンプルで指定しているもの以外にもパラメータは多く定義されています。
詳しくは公式ドキュメントをご覧ください。

searchItems

https://webservices.amazon.com/paapi5/documentation/search-items.html

getItems

https://webservices.amazon.com/paapi5/documentation/get-items.html

getVariations

https://webservices.amazon.com/paapi5/documentation/get-variations.html

getBrowseNodes

https://webservices.amazon.com/paapi5/documentation/getbrowsenodes.html


Viewing all articles
Browse latest Browse all 8963

Trending Articles