チュートリアル:Node.js用のJavaScript SDKを使用してSP-API 呼び出しを自動化する

Amazonアカウントでログイン(LWA)トークンの交換と認証により、SP-API呼び出しを自動化します。

このチュートリアルでは、Amazonアカウントでログイン(LWA)トークンの交換と認証を使用してJavaScript SDK for Node.jsを生成し、アプリケーションをシームレスに構築するために必要なすべての詳細について説明します。JavaScript SDK for Node.jsの構築に必要な前提条件について学び、出品者向けSelling Partner APIとSwagger Code Generatorの使用例もご覧ください。

SP-API JavaScript SDK for Node.jsは、AmazonのSelling Partner APIとサーバー側で統合するように設計されています。このチュートリアルでは、実用的なアプリケーションに焦点を当ててSP-API呼び出しの統合と実行について説明するため、API呼び出しを実行してAmazonのマーケットプレイス機能をサーバー側のプロセスに直接統合できるようになります。

チュートリアル

次のチュートリアルは、SP-API呼び出しを自動化するための独自のJavaScript SDK for Node.jsをセットアップする際に役立ちます。

前提条件

このチュートリアルを完了するには、次の前提条件が必要です。

  • ドラフトまたは公開状態のハイブリッドアプリまたはSP-APIアプリ
  • 統合開発環境(IDE)ソフトウェア
  • Javaバージョン7以降
  • swagger-codegen-cli-2.4.29
  • Node.js v18以降

❗️

警告

swagger-codegen-cli-2.4.29を必ず使用してください。2.4.29以外のswagger-codegen-cliバージョンを使用する場合、SDKの生成は失敗します。間違ったバージョンを使用すると、統合プロセスで問題が拡大する可能性があります。

アプリケーションをSelling Partner APIに接続する前に、アプリケーションを登録し、出品パートナーの承認を受ける必要があります。ハイブリッドアプリやSP-APIアプリをお持ちでない場合は、開発者として登録アプリケーションの登録Selling Partner APIアプリケーションの承認の手順に従ってください。その後、このチュートリアルに戻ってください。

次に、チュートリアル用のワークスペースを設定します。

ステップ1. ワークスペースをセットアップします。

  1. ローカルドライブに、このプロジェクト用のディレクトリを作成し、SPAPI_JavaScript_SDKという名前を付けて新しいディレクトリに移動します。

    mkdir SPAPI_JavaScript_SDK cd SPAPI_JavaScript_SDK
  2. 以下のツールをダウンロードしてください。

  3. 次のコマンドを実行してSwagger Code Generatorをダウンロードします。

    wget https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.29/swagger-codegen-cli-2.4.29.jar
  4. 次のコマンドを使用してファイルを取得し、権限を変更して実行可能にします。

    chmod 744 swagger-codegen-cli-2.4.29.jar
  5. swagger-codegen-cli.jarをローカルディレクトリC:\\SPAPI_JavaScript_SDKにコピーします。

  6. GitHubでhttps://github.com/amzn/selling-partner-api-models/tree/main/modelsにアクセスし、次のコマンドを使用してselling-partner-api-modelsリポジトリのクローンをローカルディレクトリC:\\SPAPI_JavaScript_SDKに作成します。

    git clone https://github.com/amzn/selling-partner-api-models

    必要な設定が完了したため、次のステップでは、sellingpartner-api-javascriptフォルダーに用意されている認証と承認クラスを使用してJavaScript SDK for Node.jsを生成します。

ステップ2. LWAトークンの交換と認証を備えたJavaScript SDK for Node.jsを生成します。

SellingPartnerAPISdkJavaScriptNode/srcディレクトリに移動します。srcディレクトリでgenerate-js-sdk.sh shellスクリプトファイルを検索します。コマンドラインで次のスクリプトを実行します。

cd SellingPartnerAPISdkJavaScriptNode/src ./generate-js-sdk.sh -j ../../swagger-codegen-cli-2.4.29.jar

modelssdkディレクトリを表示できるようになりました。パッケージルートにあるAPIモデルとJavaScript SDKがそれぞれ含まれます。

このフォルダーには、Amazon Selling Partner APIのアクセストークンを生成するためのヘルパークラスが用意されています。RestSharpライブラリを使用してSwagger Codegenによって生成されたSelling Partner APIクライアントライブラリと併用することを目的としています。カスタムプロジェクトに統合することもできます。

ステップ3. ローカルnpmパッケージを作成します。

SDKをパブリックnpmレジストリに公開しなくても、SDKをパッケージ化して複数のローカルプロジェクトで使用できます。

  1. package.jsonファイルを開いて以下を追加し、package.jsonが必要なディレクトリを含むように正しく設定されていることを確認します。

    "files": [ "src/helper/", "sdk/" ]

    このステップでは、指定したディレクトリとその内容(たとえば、src/helper/sdk/)がパッケージに含まれていることを確認します。それ以外は無視されます。

  2. ターミナルまたはコマンドプロンプトでSellingPartnerAPISdkJavaScriptNodeディレクトリに移動します。

  3. 次のコマンドを実行してパッケージを作成します。

    npm pack

    このコマンドでは、プロジェクトディレクトリにtarball(TGZファイル)が作成され、パッケージの名前とバージョンに基づいてamzn-testsellingpartnerjavascriptapilwalib-1.0.0.tgzのような名前が付きます。プロジェクトに必要なファイルがすべて含まれているため、公開されているnpmパッケージと同じようにインストールできるローカルパッケージが効果的に作成されます。

ステップ4. ローカルnpmパッケージを使用して新しいプロジェクトを作成します。

ローカルnpmパッケージを使用する新しいプロジェクトを作成できるようになりました。この方法では、エンドデベロッパーが遭遇するのと同じような環境でSDKをテストできます。

  1. 次のコマンドを入力して、新しいプロジェクトの新しいディレクトリを作成します。この例では、現在のディレクトリがSellingPartnerAPISdkJavaScriptNode/srcであることを前提としています。

    cd ../../ mkdir MyNewSPAPIProject cd MyNewSPAPIProject
  2. 新しいNode.jsプロジェクトをセットアップして、クリーンな環境を確保してください。

    npm init -y
  3. プロンプトに従って新しいプロジェクトを初期化します。デフォルトのオプションが環境に合う場合は、それをそのまま使用してください。

  4. ステップ3. ローカルnpmパッケージの作成で作成したローカルnpmパッケージをこの新しいプロジェクトにインストールします。次のコマンドでは、プレースホルダー../SellingPartnerAPISdkJavaScriptNode/amzn-testsellingpartnerjavascriptapilwalib-1.0.0.tgzをTGZファイルの実際のパスに置き換えます。このステップは、他の開発者が自分のSDKをプロジェクトにどのように統合するかをシミュレートするので非常に重要です。

    npm install ../SellingPartnerAPISdkJavaScriptNode/amzn-testsellingpartnerjavascriptapilwalib-1.0.0.tgz

    📘

    .tgzファイルのパスは、現在の作業ディレクトリに基づいて、絶対パスか相対パスにすることができます。たとえば、.tgzファイルがSellingPartnerAPISdkJavaScriptNodeディレクトリにある場合、コマンドはnpm install ../SellingPartnerAPISdkJavaScriptNode/amzn-testsellingpartnerjavascriptapilwalib-1.0.0.tgzになります。

    これらの手順を完了すると、パッケージは新しいプロジェクトのpackage.jsonに依存関係として一覧表示され、通常どおりに機能をインポートできるようになります。

ステップ5. 生成されたJavaScript SDK for Node.jsを使用してSelling Partner APIに接続します。

認証を設定すると、SP-APIエンドポイントを操作する準備が整います。

  1. LWA認証情報をプロジェクトルートのapp.config.mjsファイルに保管してください。

    touch app.config.mjs
  2. 次のように、app.config.mjs内で認証情報を定義してください。

    export const AppConfig = { lwaClientId: "< LWA client ID >", lwaClientSecret: "< LWA client secret >", lwaRefreshToken: "< LWA refresh token >", }

    🚧

    注意

    このファイルには機密情報が含まれているため、絶対にバージョン管理システムにコミットしないでください。これらのLWA認証情報は、暗号化形式で安全に保管してください。

  3. index.jsという名前の新しいファイルをプロジェクトのルートディレクトリに作成し、次のスクリプトを挿入します。特定のSP-APIエンドポイントの呼び出しが開始され、そのレスポンスがコンソールに記録されます。

    touch index.js
  4. 以下をコピーしてindex.jsに貼り付けます。

    import { AppConfig } from './app.config.mjs'; import { LwaAuthClient } from '@amzn/testsellingpartnerjavascriptapilwalib/src/helper/LwaAuthClient.mjs'; import { SellersApi, ApiClient as SellersApiClient, } from '@amzn/testsellingpartnerjavascriptapilwalib/sdk/src/sellers/index.js'; (async () => { const lwaClient = new LwaAuthClient( AppConfig.lwaClientId, AppConfig.lwaClientSecret, AppConfig.lwaRefreshToken ); const sellerApiClient = new SellersApiClient( 'https://sellingpartnerapi-fe.amazon.com' ); const sellerApi = new SellersApi(sellerApiClient); sellerApiClient.applyXAmzAccessTokenToRequest( await lwaClient.getAccessToken() ); const participations = await sellerApi.getMarketplaceParticipations(); console.log( JSON.stringify(participations, null, ' ') + '\n**********************************' ); })();
  5. スクリプトを実行します。ターミナルまたはコマンドプロンプトで次のコマンドを実行して、出品者APIエンドポイントへのGETリクエストを開始します。

    node index.js

    このコマンドはスクリプトを実行し、API呼び出しを開始し、結果をコンソールに表示します。

    期待される出力:

    { "payload": [ { "marketplace": { "id": "xxxxx", "countryCode": "JP", "name": "Amazon.co.jp", "defaultCurrencyCode": "JPY", "defaultLanguageCode": "ja_JP", "domainName": "www.amazon.jp“ }, "participation": { "isParticipating": true, "hasSuspendedListings": false } } ] }

このページは役に立ちましたか?