No Magento 1, costumávamos verificar como:
if (Mage::getSingleton('api/server')->getAdapter() != null) {
// request from Web-Service
}
Como verificar o mesmo no Magento2?
Não encontrei nenhum adaptador adequado para REST e SOAP.
No Magento 1, costumávamos verificar como:
if (Mage::getSingleton('api/server')->getAdapter() != null) {
// request from Web-Service
}
Como verificar o mesmo no Magento2?
Não encontrei nenhum adaptador adequado para REST e SOAP.
Respostas:
Eu costumava Magento\Framework\App\State::getAreaCode()
descobrir se a solicitação está chegando via API SOAP / REST.
Você pode verificar os possíveis códigos de área na Magento\Framework\App\Area
aula.
Por favor, verifique com o código abaixo,
public function __construct(\Magento\Framework\Event\Observer $observer) {
$controller = $observer->getControllerAction();
}
$isApirequest = $controller->getRequest()->getControllerModule() == 'Mage_Api';
if ($isApirequest) {
return;
}
Eu tive uma tarefa semelhante uma vez e, se me lembro corretamente, fiz isso verificando se \Magento\Framework\App\Request\Http::getFullActionName()
é igual __
. Não sei por que, mas para solicitações REST, esse seria o nome completo da ação.
No entanto, eu não achei isso seguro no momento porque não parecia a solução mais correta, então acabei verificando rigorosamente a sequência de solicitação:
if (
$this->request->getRequestString() === '/rest/V1/carts/mine/payment-information'
) {
...
Como você deve ter adivinhado, na minha situação, tive que verificar se a solicitação REST atual era muito específica.
Não sei sobre o SOAP, mas presumo que você possa usar uma abordagem semelhante. No entanto, ainda não parece a solução adequada.