Es gibt andere Fragen, die diesen Fehler abdecken, aber sie suchen nach Abfrageparametern, was nicht mein Szenario ist.API-Gateway: "Instanz von java.lang.String aus START_OBJECT-Token kann nicht deserialisiert werden"
meine einfache GET-Anfrage Testen schlägt mit dem folgend im errorMessage
Feld in der Testkonsole:
Can not deserialize instance of java.lang.String out of START_OBJECT token\n at [Source: [email protected]; line: 1, column: 1
Meine Lambda-Funktion ist eine einfache Java-Klasse mit einer statischen Methode get
, die einen Parameter: eine ID aus ein Pfad param.
Zum Beispiel sollte eine GET
zu mysite.com/resource/1
sollte 1
zu der get
Methode meiner statischen Klasse.
Ich habe kein Mapping dafür eingerichtet, weil ich den Anfragetext nicht abbilde. Die API-Gateway-Dokumentation ist sehr verwirrend und auch ziemlich leicht in ihrem Beispiel, das ein ähnliches Szenario abdeckt.
Wie kann ich einen Pfadparameter zu den Parametern meiner Lambda-Funktion zuordnen?
Ist '$ input.params' Abdeckung Pfadparameter auch? Ich habe das versucht und immer noch das gleiche Problem. –
Ja, tut es. Es ist möglich, dass der Parameter nicht korrekt eingerichtet ist? Also ist der Ressourcenpfad "/ resource/{foo}" und dann ist ein Pfadparameter namens 'foo' korrekt? In diesem Fall sollte die Vorlage, die ich oben eingefügt habe, perfekt funktionieren, wenn Sie verwenden "ressourceId": "$ input.params ('foo')" } –
Der Inhaltstyp verwirrt mich hier, denn wie Sie sagen, es ist ein GET Anfrage.Die Antwort ist im Moment nur ein String und die Handler-Methode in Java ist einfach 'public static String get (String id) {...}'. Die GET-Anfrage an meine bereitgestellte Version sollte nur 'get (pathParameter)' aufrufen, aber anscheinend bekomme ich dieselbe Fehlermeldung. Außerdem habe ich den Inhaltstyp auf application/json gesetzt, wie Sie ihn vorschlagen und zuordnen, und erhalte trotzdem den Fehler. Verblüffung. –