Magento2: Comment vérifier si la demande provient du service Web?


8

Dans Magento 1, nous avions l'habitude de vérifier comme:

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

Comment vérifier la même chose dans Magento2?

Je n'ai pas trouvé d'adaptateur approprié pour REST et SOAP.


cherchez-vous un observateur?
Rakesh Jesadiya

Généralement, cela sera vérifié par Observer.
MagePsycho

Réponses:


8

J'avais l'habitude Magento\Framework\App\State::getAreaCode()de trouver si la demande venait via l'API SOAP / REST.

Vous pouvez vérifier les indicatifs régionaux possibles en Magento\Framework\App\Areaclasse.


1

Veuillez vérifier avec le code ci-dessous,

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

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

Mais ici, le problème est: il existe également des API REST qui sont appelées à partir du site Web.
MagePsycho

0

J'ai eu une tâche similaire une fois, et si je me souviens bien, je l'ai fait en vérifiant si \Magento\Framework\App\Request\Http::getFullActionName()égal __. Je ne sais pas pourquoi, mais pour les demandes REST, ce serait le nom complet de l'action.

Cependant, je n'ai pas trouvé cela sûr à l'époque car cela ne semblait pas être la solution la plus correcte, j'ai donc fini par vérifier strictement la chaîne de demande:

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

Comme vous l'avez peut-être deviné, dans ma situation, j'ai dû vérifier si la demande REST actuelle était très spécifique.

Je ne connais pas SOAP, mais je suppose que vous pouvez utiliser une approche similaire. Cependant, cela ne semble toujours pas être la bonne solution.


Ouais. Cela ne m'aidera pas :(
MagePsycho
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.