0
Help us understand the problem. What are the problem?

posted at

updated at

【PA-API】SDKをガン無視しバニラ実装しようとしたら無事に死んだ件

はじめに

  • 用意されたSDKを安易に無視するのは悪手だった。
  • 当初の目的を見失っていた。

そんな自戒を込めた記事です。

ちなみに、Product Advertising API(以下「PA-API」という。)とはなんぞやという方に説明すると、
Amazonが提供しているAPIで、商品情報にアクセスすることができるスゴイやつです。

筆者について

4月から3年目のSEです。
恥ずかしながら外部APIを使用するのはこれが初めてでした。

何をしたか

本の検索機能を実装する際、

検索機能しか使わんし、勉強がてら実装したらええやろ!

と用意されたSDKを無視した結果、土日を溶かしました。
はい、本当にありがとうございました。

とは言っても、SDK(Node.js)と公式が用意してくれているSDKを使用していないサンプルの実装をガン見して開発していたんですけどね。
(一体何がしたかったんだ...。)

原因

APIのリクエストの際に署名プロセスが必要なのですが、その途中で作成するCanonical requestの改行コードが1つ抜けていました。
(/paapi5/searchitemsの下に改行コードが必要だった。)

SDKパイセンの出力結果と比較し判明しました。ありがとうSDK!

=====================================================================
CanonicalRequest:
POST
/paapi5/searchitems
content-encoding:amz-1.0
content-type:application/json; charset=utf-8
host:webservices.amazon.co.jp
x-amz-date:20220403T040257Z
x-amz-target:com.amazon.paapi5.v1.ProductAdvertisingAPIv1.SearchItems

content-encoding;content-type;host;x-amz-date;x-amz-target
======================================================================

教訓

  • 安易に用意されたSDKを無視するのは悪手だった。
  • 当初の目的を見失っていた。

→目的が検索機能の実装から、APIの勉強になってしまっていた。
 SDKを使用する/しないの検討を行うべきだった。

PA-APIの公式ドキュメントでも
プログラミングのベストプラクティスでSDKの使用を推奨しています。

Use our SDK
Our SDK will help you integrate with Product Advertising API quickly. It takes away all the heavy lifting from you including signing the request, request serialization and response de-serialization. It provides flexibility through allowing you to choose from different access methods based on your needs and preferences. Refer using sdk section for more details.

終わりに

もちろん、SDK/APIは無条件で使用すべき!と言いたいのではなくて、
目的に応じて判断すべきだよね。という話でした。

今回であればSDKを使用すべきだったと思います。
4月からエンジニアになった方には、ぜひ反面教師としていただきたいです。

AWSのAPIリクエストの署名プロセスだとか、APIリクエストの実装のされ方だとかを学べたのは良かったです。

ここまで見ていただきありがとうございました!
便利なAPIとか、見ておくと勉強になるAPIリポジトリとかあればコメントで教えて下さい〜!

追記

動くようにはなったものの、キャッシュとかの考慮とかががががが。
APIの勉強目的でなければ、SDK/APIはゴリゴリ使ったほうがいいですね。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?