Ich versuche, eine API-Route mit Eingabeparametern zu erstellen, erhalte jedoch nicht das erwartete Ergebnis.
Hier ist meine 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>
Hier meine Schnittstelle:
interface FooInterface
{
/**
* Test function
*
* @api
* @param string $id
* @return string
*/
public function getFooById($id);
}
Und hier die Klasse:
class Foo implements FooInterface
{
/**
* {@inheritdoc}
*/
public function getFooById($id){
return $id;
}
}
Ich lasse die di.xml mit der Präferenz weg. Wenn ich diese Route nenne, was auch immer ich tue, bekomme ich nur zurück %id%
. Selbst wenn ich keinen Parameter eingebe, bekomme ich diesen anstelle eines Fehlers oder so.
Was mache ich hier falsch?
Hier ist der Anruf beim Postboten:
Ich habe es versucht:
- Senden einer Get-Anfrage
- Senden einer Get-Anfrage mit Parameter
/order?id=foo
- Senden einer Post-Anfrage
- Senden einer Postanfrage mit Formulardaten
- Senden einer Post-Anfrage mit Rohdaten (siehe Screenshot)
Alle haben das gleiche Ergebnis -> %id%
Ich benutze übrigens die Community Edition.