Magento2: come verificare se la richiesta proviene dal servizio Web?


8

In Magento 1, controllavamo come:

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

Come controllare lo stesso in Magento2?

Non ho trovato nessun adattatore adatto per REST e SOAP.


stai cercando un osservatore?
Rakesh Jesadiya,

Principalmente questo sarà verificato da Observer.
MagoPsycho

Risposte:


8

Prima Magento\Framework\App\State::getAreaCode()trovavo la richiesta tramite l'API SOAP / REST.

È possibile verificare i possibili prefissi in Magento\Framework\App\Areaclasse.


1

Si prega di verificare con il codice seguente,

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

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

Ma qui il problema è: ci sono alcune API REST che vengono chiamate anche dal sito web.
MagoPsycho

0

Ho avuto un compito simile una volta, e se ricordo bene l'ho fatto controllando se è \Magento\Framework\App\Request\Http::getFullActionName()uguale __. Non so perché, ma per le richieste REST questo sarebbe il nome completo dell'azione.

Tuttavia, al momento non l'ho trovato sicuro perché non sembrava la soluzione più corretta, quindi ho finito controllando rigorosamente la stringa di richiesta:

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

Come avrete intuito, nella mia situazione ho dovuto verificare se l'attuale richiesta REST fosse molto specifica.

Non so di SOAP, ma suppongo che potresti usare un approccio simile. Tuttavia, non sembra ancora la soluzione corretta.


Si. Questo non mi aiuterà :(
MagePsycho
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.