Magento2: ¿Cómo verificar si la solicitud es del Servicio web?

8

En Magento 1, solíamos comprobar como:

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

¿Cómo verificar lo mismo en Magento2?

No encontré ningún adaptador adecuado que se ajuste tanto a REST como a SOAP.

MagePsycho
fuente
buscas observador?
Rakesh Jesadiya
Principalmente esto se verificará desde Observer.
MagePsycho

Respuestas:

8

Solía Magento\Framework\App\State::getAreaCode()encontrar si la solicitud llegaba a través de SOAP / REST API.

Puede verificar los posibles códigos de área en Magento\Framework\App\Areaclase.

MagePsycho
fuente
1

Por favor verifique con el siguiente código,

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

$isApirequest = $controller->getRequest()->getControllerModule() == 'Mage_Api';
if ($isApirequest) {
    return;
}
Rakesh Jesadiya
fuente
Pero aquí el problema es: hay algunas API REST que también se llaman desde el sitio web.
MagePsycho
0

Tuve una tarea similar una vez, y si recuerdo correctamente, hice esto al verificar si \Magento\Framework\App\Request\Http::getFullActionName()es igual __. No sé por qué, pero para las solicitudes REST, este sería el nombre completo de la acción.

Sin embargo, no encontré esto seguro en ese momento porque no parecía la solución más correcta, por lo que terminé verificando estrictamente la cadena de solicitud:

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

Como habrás adivinado, en mi situación tuve que verificar si la solicitud REST actual era muy específica.

No sé sobre SOAP, pero supongo que podría usar un enfoque similar. Sin embargo, todavía no parece la solución adecuada.

Giel Berkers
fuente
Si. Esto no me ayudará :(
MagePsycho