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.

MagePsycho
la source
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.

MagePsycho
la source
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;
}
Rakesh Jesadiya
la source
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.

Giel Berkers
la source
Ouais. Cela ne m'aidera pas :(
MagePsycho