Magento2: Bagaimana cara memeriksa apakah permintaan dari Layanan Web?


8

Di Magento 1, Kami biasa memeriksa sebagai:

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

Bagaimana cara memeriksa yang sama di Magento2?

Saya tidak menemukan adaptor yang sesuai yang cocok untuk REST & SOAP.


apakah kamu mencari pengamat?
Rakesh Jesadiya

Sebagian besar ini akan diperiksa dari Pengamat.
MagePsycho

Jawaban:


8

Saya dulu Magento\Framework\App\State::getAreaCode()mencari tahu apakah permintaan datang melalui SOAP / REST API.

Anda dapat memeriksa kemungkinan kode area di Magento\Framework\App\Areakelas.


1

Silakan periksa dengan kode di bawah ini,

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

$isApirequest = $controller->getRequest()->getControllerModule() == 'Mage_Api';
if ($isApirequest) {
    return;
}

Tapi di sini masalahnya adalah: ada beberapa API SISA yang dipanggil dari situs web juga.
MagePsycho

0

Saya punya tugas yang sama sekali, dan jika saya ingat dengan benar saya melakukan ini dengan memeriksa apakah \Magento\Framework\App\Request\Http::getFullActionName()sama __. Saya tidak tahu mengapa, tetapi untuk permintaan REST ini akan menjadi nama tindakan lengkap.

Namun, saya tidak menemukan ini aman pada saat itu karena rasanya tidak seperti solusi yang paling benar, jadi saya akhirnya dengan ketat memeriksa string permintaan:

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

Seperti yang mungkin sudah Anda duga, dalam situasi saya, saya harus memeriksa apakah permintaan REST saat ini sangat spesifik.

Saya tidak tahu tentang SOAP, tapi saya berasumsi Anda bisa menggunakan pendekatan yang sama. Namun, itu masih tidak terasa seperti solusi yang tepat.


Ya. Ini tidak akan membantu saya :(
MagePsycho
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.