Magento2: Como verificar se a solicitação é do Web Service?

8

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.

Mago Psico
fonte
você está procurando observador?
Rakesh Jesadiya
Principalmente, isso será verificado no Observer.
precisa saber é o seguinte

Respostas:

8

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\Areaaula.

Mago Psico
fonte
1

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;
}
Rakesh Jesadiya
fonte
Mas aqui está o problema: existem algumas APIs REST que também são chamadas no site.
precisa saber é o seguinte
0

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.

Giel Berkers
fonte
Sim. Isso não vai me ajudar :(
MagePsycho 2/17/17