Estoy tratando de crear una ruta api con parámetros de entrada pero no obtengo el resultado esperado.
Aquí está mi 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>
Aquí mi interfaz:
interface FooInterface
{
/**
* Test function
*
* @api
* @param string $id
* @return string
*/
public function getFooById($id);
}
Y aquí la clase:
class Foo implements FooInterface
{
/**
* {@inheritdoc}
*/
public function getFooById($id){
return $id;
}
}
Estoy omitiendo el di.xml con la preferencia. Ahora, si llamo a esa ruta, sea lo que sea que haga, todo lo que regreso es %id%
. Incluso si no pongo ningún parámetro, obtengo eso en lugar de un error o algo así.
¿Qué estoy haciendo mal aquí?
Aquí está la llamada en cartero:
Lo intenté:
- enviando una solicitud de obtención
- enviando una solicitud get con parámetro
/order?id=foo
- enviando una solicitud de publicación
- Enviar una solicitud de publicación con datos de formulario
- Enviar una solicitud de publicación con datos sin procesar (como se ve en la captura de pantalla)
Todos tienen el mismo resultado -> %id%
Estoy usando la edición comunitaria por cierto.