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.


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.


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;
}

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.


Si. Esto no me ayudará :(
MagePsycho
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.