Unten finden Sie das benutzerdefinierte API-Modul mit dem Schlüsselpaarwert.
Um die JSON-Antwort zu erhalten, setzen Sie im Client die Antwortheader auf"Content-Type: application/json; charset=utf-8"
und wenn Sie einen Schlüsselpaarwert benötigen, der als Antwort verwendet wird, sollten Schlüssel und Wert so sein, wie /rest/V1/categories
wir eine Datenschnittstelle erstellen müssen
Um in Chrome das Download-Plugin namens Rest Client App zu testen, rufen Sie die URL auf
Die folgende Modul-URL lautet http://yourdomein.com/magento2/rest/V1/getinfo
App \ Code \ Sugarcode \ Customapi \ Registrierung.php :
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Sugarcode_Customapi',
__DIR__
);
app \ code \ Sugarcode \ Customapi \ etc \ module.xml :
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
<module name="Sugarcode_Customapi" setup_version="2.0.0"/>
</config>
app \ code \ Sugarcode \ Customapi \ etc \ di.xml :
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
<preference for="Sugarcode\Customapi\Api\TestInterface"
type="Sugarcode\Customapi\Model\Test" />
<preference for="Sugarcode\Customapi\Api\Data\TestdataInterface" type="Sugarcode\Customapi\Model\Testmodel" />
</config>
app \ code \ Sugarcode \ Customapi \ etc \ webapi.xml :
<?xml version="1.0"?>
<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../app/code/Magento/Webapi/etc/webapi.xsd">
<!-- Example: curl http://127.0.0.1/index.php/rest/V1/calculator/add/1/2 -->
<route url="/V1/getinfo" method="GET">
<service class="Sugarcode\Customapi\Api\TestInterface" method="getinfo" />
<resources>
<resource ref="anonymous" />
</resources>
</route>
</routes>
app \ code \ Sugarcode \ Customapi \ Api \ TestInterface.php :
<?php
namespace Sugarcode\Customapi\Api;
use Sugarcode\Customapi\Api\Data\TestdataInterface;
interface TestInterface
{
/**
* Retrieve list of info
*
* @throws \Magento\Framework\Exception\NoSuchEntityException If ID is not found
* @return \Sugarcode\Customapi\Api\Data\TestdataInterface containing Tree objects
*/
public function getinfo();
}
Entfernen Sie keine Kommentare, es ist am wichtigsten
app \ code \ Sugarcode \ Customapi \ Api \ Data \ TestdataInterface.php (Daten festlegen und abrufen ):
<?php
namespace Sugarcode\Customapi\Api\Data;
/**
* @api
*/
interface TestdataInterface
{
/**
* Get name
*
* @return string
*/
public function getName();
/**
* Set name
*
* @param string $name
* @return $this
*/
public function setName($id);
}
app \ code \ Sugarcode \ Customapi \ Model \ Test.php :
<?php
namespace Sugarcode\Customapi\Model;
use Sugarcode\Customapi\Api\TestInterface;
/**
* Defines the implementaiton class of the calculator service contract.
*/
class Test implements TestInterface
{
/**
* Return the sum of the two numbers.
*
* @api
* @param int $num1 Left hand operand.
* @param int $num2 Right hand operand.
* @return int The sum of the two values.
*/
protected $dataFactory;
public function __construct(\Sugarcode\Customapi\Api\Data\TestdataInterfaceFactory $dataFactory)
{
$this->dataFactory = $dataFactory;
}
public function getinfo() {
$page_object = $this->dataFactory->create();
$page_object->setName('Hello');
return $page_object;
}
}
app \ code \ Sugarcode \ Customapi \ Model \ Testmodel.php :
<?php
namespace Sugarcode\Customapi\Model;
class Testmodel extends \Magento\Framework\Model\AbstractModel implements
\Sugarcode\Customapi\Api\Data\TestdataInterface
{
const KEY_NAME = 'name';
public function __construct(
\Magento\Framework\Model\Context $context,
\Magento\Framework\Registry $registry,
\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
array $data = []
) {
parent::__construct($context, $registry, $resource, $resourceCollection, $data);
}
public function getName()
{
return $this->_getData(self::KEY_NAME);
}
/**
* Set name
*
* @param string $name
* @return $this
*/
public function setName($name)
{
return $this->setData(self::KEY_NAME, $name);
}
}
Das Antwortformat (XML oder JSON) wird basierend auf dem
Accept
Header ausgewählt undapplication/json
auf der Clientseite festgelegt.quelle
Magento/Webapi/etc/di.xml
. Verwenden Sie andernfalls ein Plugin für den Browser, um die richtigen Header festzulegen (z. B. REST-Client für Firefox). Auf jeden Fall ist es möglich, nur auf "anonyme" Ressourcen ohneAuthorization
Header zuzugreifen .Verwenden Sie eine cURL:
In diesem Schritt zur
json_decode()
PHP-Funktion gibt der zweite Parametertrue
JSON im Array fortmat zurück. Weitere Informationen finden Sie unter: http://php.net/json_decodeUnd dann:
quelle
Ich würde empfehlen, einen leichten REST-Client über einen Browser zu verwenden. Wenn Sie Chrome installiert haben, installieren Sie einfach die "Postman-Erweiterung". Dort können Sie auswählen, in welcher Darstellung Sie die Antwort sehen möchten.
quelle