Api là một phần thiết yếu của các ứng dụng thương mại điện tử. Thậm chí nếu bạn chỉ mới bắt đầu làm việc với Magento, chắc chắn bạn cũng đã từng nghe nói về nó. Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu Api trong Magento 2 là gì? Các loại Api trong Magento 2 và làm thế nào để làm việc với chúng.
Api trong Magento 2 là gì?
Api là viết tắt của Application Programming Interface(Giao diện lập trình ứng dụng). Nói chung, nó cho phép bạn truy cập dữ liệu từ một ứng dụng. Nói cách khác, Api có thể được gọi như một người trung gian giữa một người lập trình và một ứng dụng. Khi người lập trình tạo một yêu cầu thông qua Api, nếu yêu cầu đó được chấp thuận thì dữ liệu tương ứng sẽ được trả về.
Các loại Api trong Magento 2
Để làm việc được với Magento 2 Api các bạn cần phải biết các loại Api của nó. Trước khi bạn có thể tạo một cuộc gọi Api, thì trước tiên bạn cần phải xác thực danh tính của bạn và bạn phải có quyền cần thiết để truy cập vào Api. Dựa vào quyền truy cập của user (administrators, integration, customer hoặc guest) để xác định khả năng truy cập tài nguyên của cuộc gọi Api.
Có ba loại xác thực mà chúng ta có thể sử dụng:
1. Token – based authentication
Ở đây chúng ta cần cung cấp username và password trong quá trình kết nối ban đầu và nhận về mã token được sử dụng cho các yêu cầu sau này, cho đến khi mã token hết hạn.
Bạn có thể mở terminal và chạy câu lệnh sau, sẽ nhận được mã token w9p8cjicf8r5wf7yeegltxutszed2fyi:
1 |
curl -X POST "https://example.com/rest/all/V1/integration/admin/token" -H "accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer createCustomerAccessToken" -d "{ \"username\": \"admin29\", \"password\": \"long2901\"}" |
Sau khi thực thi lệnh trên bạn sẽ nhận được một mã token 18msvd11pb91wmjzu6f1g21rm5hwquzy và sau đó tất cả các truy vấn nên chứa mã token này. Đây là một ví dụ kết quả trả về trên Swagger:

Xem thêm: Sử dụng Api thông qua Swagger trong Magento 2
Ví dụ, mình sẽ lấy thông tin customer với id và mã token ở phía trên:
1 2 |
curl -X GET "https://example.com/rest/all/V1/customers/6" -H "accept: application/json" -H 'Authorization: Bearer 18msvd11pb91wmjzu6f1g21rm5hwquzy' |
Kết quả chúng ta sẽ nhận được thông tin của customer tương ứng:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
{ "id":6, "group_id":1, "created_at":"2021-02-26 14:02:36", "updated_at":"2021-02-26 14:04:36", "created_in":"Default Store View", "email":"lelong29@gmail.com", "firstname":"le", "lastname":"long", "store_id":1, "website_id":1, "addresses":[ ], "disable_auto_group_change":0, "extension_attributes":{ "is_subscribed":false } |
Nó khớp với thông tin trong admin:

Một ví dụ khác về sử dụng SOAP API thông qua PHP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php $request = new SoapClient("https://example.com/index.php/soap/?wsdl&services=integrationAdminTokenServiceV1", array("soap_version" => SOAP_1_2)); $token = $request->integrationAdminTokenServiceV1CreateAdminAccessToken(array("username"=>"An%your_admin_username%", "password"=>"%your_admin_password%")); $opts = array( 'http'=>array( 'header' => 'Authorization: Bearer '.json_decode($token->result) ) ); $wsdlUrl = 'https://example.com/soap/default?wsdl&services=directoryCurrencyInformationAcquirerV1'; $context = stream_context_create($opts); $soapClient = new SoapClient($wsdlUrl, ['version' => SOAP_1_2, 'context' => $context]); $soapResponse = $soapClient->__getFunctions(); echo '<pre>'; var_dump($soapResponse); echo '</pre>'; |
Chúng ta sẽ nhận được kết quả như bên dưới:
1 2 3 4 |
array (size=1) 0 => string 'DirectoryCurrencyInformationAcquirerV1GetCurrencyInfoResponse directoryCurrencyInformationAcquirerV1GetCurrencyInfo DirectoryCurrencyInformationAcquirerV1GetCurrencyInfoRequest $messageParameters)' |
2. Session – based authentication
Session – based authentication được xem là đơn giản nhất trong cả ba.
Nói ngắn gọn, Magento 2 Api framework sử dụng phiên làm việc của bạn để cấp quyền truy cập vào các tài nguyên được yêu cầu. Ví dụ, nếu một customer đăng nhập vào Magento, tiện ích Javascript sẽ gọi Api và lấy thông tin chi tiết về customer vừa đăng nhập:
1 |
GET /rest/V1/customers/me |
Session – based authentication bị hạn chế chỉ cho phép Ajax gọi đến. Yêu cầu trực tiếp từ trình duyệt sẽ không được tiến hành vì sợ lỗ hổng bảo mật.
3. OAuth – based authentication
Magento Api như là một dịch vụ để truy cập tài nguyên của bên thứ ba thông qua việc chấp thuận của chủ sở hữu tài nguyên. Để sử dụng nó, bạn cần đăng nhập vào admin và đi đến System > Extensions > Integrations > Add new integration:

Nhấn button Add New Integration và điền đầy đủ các thông tin bắt buộc vào tab Integration Info:


Ở tab Api chọn các resource mà bạn muốn các yêu cầu Api được truy cập. Nếu muốn truy cập tất cả thì ở field Resource Access bạn cần chọn All. Sau đó nhấn lựa chọn Save & Active ở dropdown menu. Một popup sẽ hiện ra, hãy nhấn Allow để tiếp tục.

Một popup khác hiện lên với thông tin được dùng để xác thực trong các yêu cầu Api sử dụng OAuth.
Kết luận
Trong bài viết này chúng ta đã cùng nhau tìm hiểu về Api trong Magento 2. Ở các bài viết sau, chúng ta sẽ tìm hiểu chi tiết hơn về nó. Bài viết tham khảo : https://belvg.com/blog/how-to-use-magento-2-api-documentation-examples-tutorial.html