【メモ】Laravelで簡単なAPIを実装してみる【#np2020】

Laravelへの機能実装を進めながら泥縄でいろいろ勉強するということをしています。で、ある機能を実装するのにフロントエンドはVueで実装して、データはサーバ側で取得してJSONで渡そうかというようなことを考え、APIを実装してみました。とりあえずサンプルなので使うデータは何でも良かったんですが、あとで使えるようにってことでAmazonの商品情報API(Amazon Product Advertising API)を使うことに。ASINを渡すと商品情報のJSONを返してくれるだけのシンプルなAPIです。



参考にさせて頂いた記事はこちら。

Laravel用AmazonAPIモジュール – Sheltie's Garage



環境準備


Laravel用Amazon Product Advertising APIモジュールのインストール


まず、Laravel用Amazon Product Advertising APIモジュールをインストールします。

kawax/laravel-amazon-product-api

例によってcomposerで持ってきて、登録するだけです。

composer require revolution/laravel-amazon-product-api
php artisan vendor:publish --provider="Revolution\Amazon\ProductAdvertising\Providers\AmazonProductServiceProvider"

その昔、PECLとかのライブラリ使ってあれこれやってましたけど、言ってみればそれのフレームワーク版ですよね。環境は違えど考えることは同じです。便利なものは共有したいし。


.envファイルの設定


.envファイルを編集して以下の設定を追加します。

AMAZON_API_KEY=*****
AMAZON_API_SECRET_KEY=*****
AMAZON_ASSOCIATE_TAG=*****
AMAZON_COUNTRY=co.jp

API KEYは各自取得してくださいね。
(なんか最近審査が厳しくなってるみたいですけど)

以上で設定は終わりです。



ルーティングの設定


次はルーティングの設定。URIとしてはこんな感じで動くのを想定しています。

https://example.com/api/asin/B00C9QZNKU

routes/api.php



app/Http/Controllers/AmazonAsinApiController.php




これだけ。

これだけで、https://example.com/api/asin/B00C9QZNKU にGETリクエストを投げると商品情報がJSONで返ってくるようになります。


20190516_ss.png


あとはそれをフロントエンドでごにょごにょすればOK。超簡単。

api.phpのとこ、showしか使わないならresourceである必要ないだろっていう気がビンビンにしますが、本当にこれしか機能がないならこれでもいいかも知れません。




まとめ


超簡単です。なるべくコードを書かなくて良いように出来てる。

フレームワークを理解していなかった昔は「そんなの関係ねー」とか言って俺俺コードを書いて満足してましたが、もうそんなの面倒くさくてやってられない体になってしまいました。その分他の開発に時間を割けるわけで、技術の進歩ってこういうことですよね、って日々思ってます。