apai-io(Amazonの商品検索API呼び出しライブラリ)をLaravelで呼び出して使う方法を紹介します。
rezzafr33/apaiio-laravelを使う場合のやり方です。
素のPHPでAmazon商品検索する方法、以下の記事に書いてます。

Laravelからapai-ioを使う方法
Laravelから外部のライブラリを呼び出すにはサービスプロバイダ というものを定義してあげると楽です。
https://readouble.com/laravel/5.6/ja/providers.html
しかし自分で作るのがめんどくさそうだったので、人が作ったものを使わせてもらう事にしました。
rezzafr33/apaiio-laravelを使わせてもらう
rezzafr33/apaiio-laravelというLaravel用のapai-ioサービスプロバイダが公開されているのを発見しました。こちらを使わせて頂きます。
https://github.com/rezzafr33/apaiio-laravel
インストール
composerでインストールします。
composer require rezzafr33/apaiio-laravel
providersとaliasesにApaiioを追加する
config/app.php に以下を追記します。
<?php return [ 'providers' => [ … Apaiio\Laravel\ApaiIOServiceProvider::class, // 追記 ], 'aliases' => [ … 'Apaiio' => Apaiio\Laravel\ApaiIOFacade::class, // 追記 ],
config/apaiio.phpを追加する
config/apaiio.phpというファイルを作り、中身を以下のようにします。
<?php return [ 'AWS_API_KEY' => env('AWS_API_KEY', 'デフォルトのAPIキー'), 'AWS_API_SECRET_KEY' => env('AWS_API_SECRET_KEY', 'デフォルトのシークレットキー'), 'AWS_ASSOCIATE_TAG' => env('AWS_ASSOCIATE_TAG', 'デフォルトのアソシエイトタグ'), 'ENDPOINT' => env('AWS_ENDPOINT', 'co.jp'), 'REQUEST' => env('AWS_REQUEST', '\ApaiIO\Request\Rest\Request'), 'RESPONSE' => env('AWS_RESPONSE', '\ApaiIO\ResponseTransformer\XmlToSimpleXmlObject') ];
ここに書いたものがapai-ioのconfigの値としてセットされます。
envを使うかどうかはお好みで良いと思います。
apai-ioをコントローラーで使う例
以下が使用例です。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Foundation\Application; use ApaiIO\Operations\Search; // 検索パラメタを作るのに必要 class SampleController extends Controller { public function index() { // 検索条件を設定する $search = new Search(); $search->setCategory('VideoGames'); $search->setSort('salesrank'); $search->setBrowseNode('637872'); $search->setResponseGroup(['Medium']); // 検索実行。結果を$resに保存。 $res = \Apaiio::runOperation($search); // 結果は10件ずつしか取れない。 // 2ページ目以降が欲しい時は検索条件に以下を追加して再検索する。 // $search->setItemPage(ページ番号); // 総ページ数は以下で取得できる。 // $res->Items->TotalPages; } }
configの設定を書かなくてよくなり、スッキリしました。
runOperation()に渡すクラスを切り替える事で、APIの操作が変わるという仕組みです。
レスポンス形式について。
レスポンス形式はsetResponseGroup() で指定した値によって変わります。
Medium を指定した場合のレスポンス形式は以下のドキュメント参照です。
https://docs.aws.amazon.com/ja_jp/AWSECommerceService/latest/DG/RG_Medium.html
Small だと商品画像のULRが取得できなかったので、私はMedium を使っています。
以上、LaravelでAmazonの商品検索をする例でした。
参考になると嬉しいです。
コメント/ピンバック