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.
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.
Risposte:
Prima Magento\Framework\App\State::getAreaCode()
trovavo la richiesta tramite l'API SOAP / REST.
È possibile verificare i possibili prefissi in Magento\Framework\App\Area
classe.
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;
}
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.