Labo

EC-CUBE3 分室

【3.0.15】EC-CUBE API プラグイン(3)

2017年09月24日 / 投稿者名:chiharu


引き続き API プラグインについての調査を進めていきます。
前回はURLからのデータ取得を試してみました。
幾つかの疑問点も残りましたので其の辺りを再度確認して行きたいと思います。
まぁ、今回は少しアプローチの方法を変えてソースから確認して行きたいと思います。
 
取り急ぎは前回の商品個別情報についてですね。

http://<API導入済みEC-CUBE用ドメイン>/api/v0/product/1

上記で商品ID:1 の商品を取得出来るかと思いましたが、結果は以下の通りでした。
まずは以下の内容から進めていきたいと思います。

{"errors":[{"code":404,"message":"Not found"},{"code":400,"message":"Catchable Fatal Error: Argument 3 passed to Plugin\\EccubeApi\\Controller\\EccubeApiCRUDController::findEntity() must be an instance of Plugin\\EccubeApi\\Controller\\callable, instance of Closure given, called in \<インストールディレクトリ>\/public_html\/app\/Plugin\/EccubeApi\/Controller\/EccubeApiCRUDController.php on line 145 and defined"}]}

 
現時点ではプログラムのエラーがあって表示されないのか、それともURLの指定が正常では無いのかを確認していきたいと思います。
問題はエラーコードを確認すれば解決には近づけるのかと思います。
で、エラー文言に沿って「/app/Plugin/EccubeApi/Controller/EccubeApiCRUDController.php」の内容を見てみます。
 
上記エラー発生個所を確認してみると、URL上にて指定した商品コードは正式に取得できているようです。
該当のエラーについては、商品詳細を取得するための 引数を指定しているのですが、指定した instance の型が違うと怒られているようです。
 
また、上記に原因として認証システム経由で情報を取得する前提となったロジックが組み込まれているからです。
このロジック部分は会員認証時に他会員の情報に不正アクセスできないようにセキュリティを高めるための部分ですね。
役割を考えると非常に当たり前の状況の様です。
 
と云うことで、認証システム経由で情報を取得することが出来れば問題無く上記のURLにアクセスすることで情報取得できそうです。
・・・確認するためには認証システムの作成が急務ですね(笑)
 
 
 
なお、URLに表記されているバージョンについてや公式サイトでの表記のズレについても理解できました。
今回はそちらの内容についても合わせて記載しておこうかと思います。
 
 
■ EC-CUBE API 開発方針と参考資料のAPIエンドポイントの差異について
 
 こちらは簡単な理由でした。
 公式のEC-CUBE API 開発方針について修正が間に合っていないだけの様です。
 
 実際に公式に記載されていた方法にて以下のソースファイルにも記述がされていました。
  /app/Plugin/EccubeApi/eccubeapi.yml
 
 ただし、「## 以下v0用記述サンプル」として大きくコメントアウトされていました。
 こういう点でも現在の仕様が「v0」では無く「v1」となっていることを確認できますね。
 とは云ってもいたるところにて「v1」では無く「v0」のままとなっていることを散見できます(笑)
 
 
■ APIバージョニングが「v0」にて動作している問題
 
 こちらは故意か修正漏れか微妙にわかりません(笑)
 原因は以下のファイルになります。
  /app/Plugin/EccubeApi/Resource/config/constant.yml
 
 上記ファイルには URL で指定するための APIバージョニングが指定されています。
 実際の指定行は以下の部分です。

api.version: v0

 上記の設定部分を「v1」として設定すると、URLにて指定するバージョンンも「v1」として動作します。
 ・・・もしかすると設定忘れかもしれませんし、開発の利便性のため各人で変更するようにされているのかもしれません。
 何せβ版ですので開発を優先に進めているのだろうなぁ、と想像してしましました。
 

api.endpoint: /api

 ちなみに該当ファイルには上記のような項目もありました。
 エンドポイントの先頭部分となる文字列も変更できるようにされています。
 セキュリティと云う観点から考えればここも変更するほうが良いのだろうなと思いますね。
 
 
 
前回は調べもせず「開発方針と現在の進行状況が乖離しているのかもしれません」などと偉そうなことを書きました。
今のところ順調に進めて頂いているようです。
順調に進んでいればこそ、今後進展について以下のように興味は尽き無い状況です。
 「β版が取れるころにはバージョン何になっているのか」
 「2系でのAPIプラグインは作成されないのか」
 
と云うことで今回の調査内容はこの辺りとさせて頂きます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

* Copy This Password *

* Type Or Paste Password Here *

*

コメント欄にコードを挿入したい場合は、[php][/php] を使ってください。