Я пытаюсь создать маршрут API с входными параметрами, но я не получаю ожидаемый результат.
Вот мой 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">
<route url="/V1/foo" method="POST" secure="true">
<service class="..\FooInterface"
method="getFooById"/>
<resources>
<resource ref="anonymous"/>
</resources>
<data>
<parameter name="id" force="true">%id%</parameter>
</data>
</route>
</routes>
Вот мой интерфейс:
interface FooInterface
{
/**
* Test function
*
* @api
* @param string $id
* @return string
*/
public function getFooById($id);
}
И вот класс:
class Foo implements FooInterface
{
/**
* {@inheritdoc}
*/
public function getFooById($id){
return $id;
}
}
Я опускаю di.xml с предпочтением. Теперь, если я назову этот маршрут, что бы я ни делал, я получу обратно %id%
. Даже если я не введу какой-либо параметр, я получу это вместо ошибки или чего-то еще.
Что я здесь не так делаю?
Я старался:
- отправив запрос на получение
- отправка запроса get с параметром
/order?id=foo
- отправка почтового запроса
- отправка почтового запроса с данными формы
- отправка почтового запроса с необработанными данными (как показано на скриншоте)
У всех одинаковый результат -> %id%
Я использую издание сообщества, кстати.
Ответы:
После проверки основных модулей обнаружил, что
parameter
узел в webapi.xml используется только в модуле клиента дляself
типа ресурса.Ниже файл отвечает за заполнитель параметра Convert со значением.
Теперь есть два способа передать параметр в API.
Решение 1:
webapi.xml
как ниже:и укажите
$id
аргумент в классе интерфейса, а также в определении реализации. В этом случае вам нужно передать id в качестве содержимого тела.Решение 2:
webapi.xml
как ниже:и укажите
$id
аргумент в классе интерфейса, а также в определении реализации. В этом случае вам нужно передать идентификатор в URL в качестве аргумента. Для этого вы также можете проверить модуль продукта.источник
data
элемент в webapi.xml. Простое исключение дает ожидаемый результат, но не решает актуальную проблему.