1 minute read

EC-CUBE4 対応の Web API プラグイン

外部サービスと連携するため、GraphQL による Web API 機能を実現します。

システム要件

  • PHP 7.2 or higher
  • PostgreSQL or MySQL
  • SSLサーバー証明書(TLS) は必須

  • テスト環境の作成には Docker が必要です

現在のバージョンでの制限事項

  • Windows 環境での動作は未確認です
  • SQLite3 には未対応です
  • システム間連携を想定したAPIを前提としています。 ネイティブアプリケーションや、 SPA(Single Page Application)、シングルサインオン(SSO)などの用途は想定されていません
  • Authorization code Grant 以外の Grant には未対応です
  • OAuth2.0(RFC6749) や OpenID Connect には完全に準拠していません。今後のバージョンアップで準拠を目指していく予定です

Quick Start

  1. 本プラグイン対応用のブランチをチェックアウトします。
     git clone https://github.com/EC-CUBE/ec-cube.git
     cd ec-cube
     git checkout experimental/plugin_bundle
     composer install
    
  2. DATABASE_URL と DATABASE_SERVER_VERSION を適宜変更。(実際の環境に合わせること)
     ## for PostgreSQL
     sed -i.bak -e 's/DATABASE_URL=sqlite:\/\/\/var\/eccube.db/DATABASE_URL=postgres:\/\/postgres:password@127.0.0.1\/eccubedb/g' ./.env
     sed -i.bak -e 's/DATABASE_SERVER_VERSION=3/DATABASE_SERVER_VERSION=9/g' ./.env
    
     ## for MySQL
     sed -i.bak -e 's/DATABASE_URL=sqlite:\/\/\/var\/eccube.db/DATABASE_URL=mysql:\/\/root:password@127.0.0.1\/eccubedb/g' ./.env
     sed -i.bak -e 's/DATABASE_SERVER_VERSION=3/DATABASE_SERVER_VERSION=5.7/g' ./.env
    
  3. EC-CUBE4 をインストールします。
     bin/console eccube:install --no-interaction
    
  4. EC-CUBEオーナーズストアのモックサーバーをセットアップします。
     # プラグインの保管ディレクトリを作成
     mkdir ${PWD}/repos
     # mockサーバを起動。ここでは9999をポート番号に設定していますが、必要に応じて変更してください
     docker run -d --rm -v ${PWD}/repos:/repos -e MOCK_REPO_DIR=/repos -p 9999:8080 eccube/mock-package-api
     # mockサーバを参照するように環境変数を定義
     echo ECCUBE_PACKAGE_API_URL=http://127.0.0.1:9999 >> .env
    
  5. 認証キーを設定します。
     bin/console doctrine:query:sql "update dtb_base_info set authentication_key='dummy'"
    
  6. プラグインのパッケージを配置します。
     cd repos
     git clone https://github.com/EC-CUBE/eccube-api4.git
     cd eccube-api4
     tar cvzf ../Api-1.0.0.tgz *
     cd ../../
    
  7. プラグインをインストールします。
     bin/console eccube:composer:require ec-cube/Api
     bin/console eccube:plugin:enable --code=Api
    
    • 管理画面→オーナーズストア→プラグイン→ プラグインを探す からでもプラグインをインストールできます。
  8. ビルトインウェブサーバーを起動
     bin/console server:run
    
  9. OAuth2.0 による認可 より API クライアントの認可をしてください。
  10. 機能仕様 より API をコールしてみましょう!

API プラグインの開発のため Git リポジトリで置き換える場合は以下のとおり。 プラグインをアンインストールすると、 Git リポジトリごと削除されてしまうため注意すること

cd app/Plugin/

rm -rf Api
git clone https://github.com/EC-CUBE/eccube-api4.git
mv eccube-api4 Api

OAuth2.0 による認可

EC-CUBE で Web API を実行する際、顧客情報を参照したり、受注情報を更新する場合などは API クライアントの認可が必要です。

このプラグインでは、 OAuth2.0 プロトコルをサポートしています。

対応するフロー

Authorization Code Flow のみに対応しています。

機能仕様

この記事は GraphQL についての説明はしていませんので、GraphQL 自体の仕様についてGraphQL公式サイト等でご確認ください。

GraphQLのスキーマbin/console eccube:api:dump-schema コマンドで出力できます。

GraphQL の Query で以下のデータの取得が可能です。

GraphQL の Mutation で以下のデータを更新可能です。

商品/受注/会員情報の変更時(登録/更新/削除)に登録されたWebHookに対して変更を通知します。

拡張機構

CustomizeディレクトリやプラグインでAPIを拡張できます。