Estou tentando criar uma rota API com parâmetros de entrada, mas não estou obtendo o resultado esperado.
Aqui está o meu 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>
Aqui está minha interface:
interface FooInterface
{
/**
* Test function
*
* @api
* @param string $id
* @return string
*/
public function getFooById($id);
}
E aqui a turma:
class Foo implements FooInterface
{
/**
* {@inheritdoc}
*/
public function getFooById($id){
return $id;
}
}
Estou omitindo o di.xml com a preferência. Agora, se eu chamar essa rota de tudo o que faço, tudo o que recebo é %id%
. Mesmo se eu não colocar nenhum parâmetro, entendo isso em vez de um erro ou algo assim.
O que eu estou fazendo errado aqui?
Aqui está a chamada no carteiro:
Eu tentei:
- enviando uma solicitação get
- enviando uma solicitação get com o parâmetro
/order?id=foo
- enviando uma solicitação de postagem
- enviando uma solicitação de postagem com dados do formulário
- enviando uma solicitação de postagem com dados brutos (como visto na captura de tela)
Todos têm o mesmo resultado -> %id%
Estou usando o Community Edition btw.