Magento Web API (REST & SOAP) の使用を開始する

公開: 2020-10-06

Magento 2 Web API フレームワークは、サードパーティ モジュールと通信できる新しいサービスを作成する機会をユーザーに提供します。 Magento 2 は、CRUD 操作 (作成、読み取り、更新、および削除) に基づいて REST および SOAP Web サービスをサポートします。

この記事では、Magento 2 API を使用する最初の手順について説明します。 これらの API は、処理能力を高速化し、製品、顧客、注文などのデータの送信、およびサードパーティ システムへの転送を容易にします。 在庫管理にも役立ちます。

プロセスを自動化することで、API を使用することでコードの記述を減らすことができます。

目次

  • Magento Web API とは何ですか?
  • Magento Web API でできること
  • はじめに: Magento 2 Rest API を使用する
  • Magento 2 で Web サービス ユーザーを作成する
  • Magento 2 REST API 認証
  • Magento 2 で REST API を使用してモジュールを取得する
  • SOAP サービスを使用する
  • SOAP サービス ― Magento 2 を使用した認証
  • 最後の言葉

Magento Web API とは何ですか?

Magento Web API は、Magento システムとの通信に役立つ Web サービスの使用を検討している開発者にとって非常に理解しやすいものです。 これらの機能は API の鍵です。

  • Magento 2 は、REST (Representational State Transfer) と SOAP (Simple Object Access Protocol) の両方をサポートしています。
  • 1) サードパーティ アプリケーション認証用の OAuth 1.0a、2) モバイル アプリケーション認証用のトークン化方式、3) 管理および顧客検証用のログイン資格情報の 3 種類の認証を提供します。
  • 数行の XML を記述することで、Magento またはサードパーティの Web API を構成できます。
  • モバイル応答を節約する Web API のフィールド フィルタリングをサポートします。
  • 現在のフレームワークは、CRUD (作成、読み取り、更新、削除) および検索モデルに基づいています。

Magento Web API でできること

API は、さまざまなモジュールが相互に通信するのに役立ちます。 それらを使用して、さまざまなタスクを実行できます。 例えば:

  • Magento を使用してオンライン ストアを作成し、それらを POS (Point of Sale) などの物理システムに接続して、在庫をグローバルに管理できます。
  • Salesforce、Microsoft Dynamics、その他のサウンド ソフトウェアなどの CRM (顧客関係管理) または ERP (エンタープライズ リソース プランニング) バックエンド システムと簡単に統合できます。
  • CMS(コンテンツ管理システム)との接続に役立ちます
  • Magento バックエンド (管理パネル) または Magento ストアフロントで JavaScript ウィジェットを作成することもできます

はじめに: Magento 2 Rest API を使用する

Magento 2 で Web サービス ロールを作成するには、次の簡単な手順に従います。

1.Magento 2 管理パネルにログインします。

2.[システム] >> [ユーザー ロール] に移動し、[新しいロールの追加] ボタンをクリックします。

Magento Web API の使用を開始する | Mageworx マジェント ブログ

3.ロール名を入力します。

Magento Web API の使用を開始する | Mageworx マジェント ブログ

4. [パスワード]フィールドに、Magento 2 管理者の現在のパスワードを入力します。

Magento Web API の使用を開始する | Mageworx マジェント ブログ

5.左側で、[ロール リソース] をクリックします。 [リソース アクセス] で、Web サービスに必要なものだけを選択します。

Magento Web API の使用を開始する | Mageworx マジェント ブログ

6.完了したら、[ロールの保存] をクリックします。

Magento 2 で Web サービス ユーザーを作成する

次の手順に従って、新しく作成したロールの新しいユーザーを作成します。

1.[システム] >> [すべてのユーザー] に移動し、[新しいユーザーの追加] をクリックします。

Magento Web API の使用を開始する | Mageworx マジェント ブログ

2. User NameFirst and Last NameEmailPasswordなどの必要な情報を入力します。

Magento Web API の使用を開始する | Mageworx マジェント ブログ

3. 左側で [ユーザー ロール] をクリックし、新しく作成したロールを選択します。 完了したら、[ユーザーを保存]ボタンをクリックします。

Magento Web API の使用を開始する | Mageworx マジェント ブログ

Magento 2 REST API 認証

ここでは、トークン認証方式で REST API を認証します。 これには、最初の接続でユーザー名とパスワードを渡し、以降の呼び出しのために変数に保存されるトークンを受け取ることが含まれます。

 <?php //API URL for authentication $apiURL="http://magento-91647-257956.cloudwaysapps.com/index.php/rest/V1/integration/admin/token"; //parameters passing with URL $data = array("username" => "username", "password" => "********"); $data_string = json_encode($data); $ch = curl_init($apiURL); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json","Content-Length: ".strlen($data_string))); $token = curl_exec($ch); //decoding generated token and saving it in a variable $token= json_decode($token); ?>

注:ユーザー名とパスワードは例として使用されています。

Magento 2 で REST API を使用してモジュールを取得する

Magento 2 REST API を使用してデータを取得できます。 Magento EE および CE の REST API の完全なリストを次に示します。

 <?php //Using above token into header $headers = array("Authorization: Bearer ".$token); //API URL to get all Magento 2 modules $requestUrl='YourgeneratedUrl'; $ch = curl_init($requestUrl); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); //decoding result $result= json_decode($result); //printing result print_r($result); ?>

上記のコードでは、Magento 2 ストアにインストールされているすべてのモジュールを取得するために、トークン (以前に取得したもの) を API URL と共に既に渡しています。

これが完全なコードです。

 <?php //API URL for authentication $apiURL="URL"; //parameters passing with URL $data = array("username" => "username", "password" => "*********"); $data_string = json_encode($data); $ch = curl_init($apiURL); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json","Content-Length: ".strlen($data_string))); $token = curl_exec($ch); //decoding generated token and saving it in a variable $token= json_decode($token); //******************************************// //Using above token into header $headers = array("Authorization: Bearer ".$token); //API URL to get all Magento 2 modules $requestUrl='YourURL'; $ch = curl_init($requestUrl); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); //decoding result $result= json_decode($result); //printing result print_r($result); ?>

SOAP サービスを使用する

SOAP サービスに入る前に、Magento の命名規則について学ぶことが重要です。

  • ネームサービスにはキャメルケースを使用する必要があります。 たとえば、MyFirstModule
  • 「Service」という文字列が省略されているため、使用できません。
  • 「Magento」プレフィックスと「Interface」サフィックスもエスカレートされます。
  • 「サービス」名が「モジュール」名と同じ場合、モジュール名は省略されます。

MageWorx アップデートのまとめ | MageWorx ブログ

そのため、これらの点に注意してください。

SOAP サービス ― Magento 2 を使用した認証

SOAP リソースには、HTTP 経由で OAuth アクセス トークンを使用してアクセスできます。 OAuth 認証はトークン方式に似ていますが、より複雑な方法を提供します。 アクセス トークンは、クライアントに発行されたアクセス承認を表す文字列です。

アクセス トークンを取得する方法を説明する PHP スクリプトを次に示します。

 <?php $opts = [ 'http'=> [ 'header' => 'Authorization: Bearer 36849300bca4fbff758d93a3379f1b8e' ] ]; $wsdlUrl = 'http://magento.ll/soap/default?wsdl=1&services=testModule1AllSoapAndRestV1'; $serviceArgs = ["id" => 1]; $context = stream_context_create($opts); $soapClient = new SoapClient($wsdlUrl, ['version' => SOAP_1_2, 'stream_context' => $context]); $soapResponse = $soapClient->testModule1AllSoapAndRestV1Item($serviceArgs); ?>

最後の言葉

この記事では、Magento Web API の基本について概説しましたが、さらに多くのことを学ぶことができます。 Magento 2 API の使用法をよりしっかりと把握したい場合は、メソッドが Magento 2 およびサードパーティの拡張機能にどのように組み込まれているかを調べる必要があります。 また、必要なシステムに情報を渡す方法も理解する必要があります。

それで、それだけです!

より高速な Magento ホスティングを安心して体験するには、DigitalOcean、Vultr、および Linode でこの 3 日間の無料トライアルをチェックしてください。