Magento2: Làm cách nào để kiểm tra xem yêu cầu có từ Dịch vụ web không?


8

Trong Magento 1, chúng tôi thường kiểm tra như:

if (Mage::getSingleton('api/server')->getAdapter() != null) {
    // request from Web-Service
}

Làm thế nào để kiểm tra tương tự trong Magento2?

Tôi không tìm thấy bất kỳ bộ chuyển đổi phù hợp nào phù hợp cho cả REST & SOAP.


bạn đang tìm kiếm người quan sát?
Rakesh Jesadiya

Chủ yếu là điều này sẽ được kiểm tra từ Observer.
MagePologistso

Câu trả lời:


8

Tôi đã sử dụng Magento\Framework\App\State::getAreaCode()để tìm nếu yêu cầu đến thông qua API SOAP / REST.

Bạn có thể kiểm tra mã vùng có thể trong Magento\Framework\App\Arealớp.


1

Vui lòng kiểm tra với mã dưới đây,

public function __construct(\Magento\Framework\Event\Observer $observer) {
    $controller = $observer->getControllerAction();
}

$isApirequest = $controller->getRequest()->getControllerModule() == 'Mage_Api';
if ($isApirequest) {
    return;
}

Nhưng vấn đề ở đây là: có một số API REST được gọi từ trang web.
MagePologistso

0

Tôi đã có một nhiệm vụ tương tự một lần, và nếu tôi nhớ chính xác, tôi đã làm điều này bằng cách kiểm tra nếu \Magento\Framework\App\Request\Http::getFullActionName()bằng __. Tôi không biết tại sao, nhưng đối với các yêu cầu REST, đây sẽ là tên hành động đầy đủ.

Tuy nhiên, tôi không thấy điều này an toàn vào thời điểm đó vì nó không cảm thấy là giải pháp chính xác nhất, vì vậy tôi đã kết thúc bằng cách kiểm tra nghiêm ngặt chuỗi yêu cầu:

if (
    $this->request->getRequestString() === '/rest/V1/carts/mine/payment-information'
) {
    ...

Như bạn có thể đoán, trong tình huống của tôi, tôi phải kiểm tra xem yêu cầu REST hiện tại có phải là một yêu cầu rất cụ thể không.

Tôi không biết về SOAP, nhưng tôi cho rằng bạn có thể sử dụng một cách tiếp cận tương tự. Tuy nhiên, nó vẫn không hoàn toàn cảm thấy như giải pháp thích hợp.


Vâng. Điều này sẽ không giúp tôi :(
MagePologistso
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.