Ich versuche, beim Aufruf von API-Gateway-Endpunkten über das JavaScript-SDK Pfadparameter festzulegen und habe kein Glück. Es sieht so aus, als hätte ich etwas falsch konfiguriert oder es gibt einen Bug in der SDK-Generation.
Ich kann erfolgreich Endpunkte aufrufen, die keine Pfadparameter enthalten, aber wenn ich versuche, einen Parameter als Pfadparameter zu übergeben, ersetzt das SDK einfach den Pfadparameter durch ein Leerzeichen und mein Aufruf schlägt fehl.
Beispiel: client
ist ein ordnungsgemäß initialisierter API-Gateway-Client. Ich habe einen Endpunkt namens /measurement
mit einem Kind von /measurement/{id}
. Ich kann beide direkt anrufen.
client.measurementGet({},{});
- ruft erfolgreich meinen /measurement
Endpunkt auf
client.measurementIdGet({"id": "1234"}, {});
- Der Browser ruft /measurement/
anstelle von /measurement/1234
Wenn ich mir die Quelle meiner apigClient.js ansehe, scheint es, dass der SDK-Generator keine Pfadparameter in die Liste der Parameter einfügt, nach denen er sucht. Zum Beispiel sieht der Code meiner generierten measurementIdGet
-Methode folgendermaßen aus:
Ich habe in assertParametersDefined
und parseParametersToObject
gegraben und es sieht so aus, als würden diese Methoden eine Liste von Parametern erwarten. In beiden Fällen hat das SDK leere Listen generiert, anstatt meinen Pfadparameter dorthin zu setzen.
Wenn ich die generierte Datei manuell aktualisiere, um die beiden Zeilen in
zu ändern apiGateway.core.utils.assertParametersDefined(params, ['id'], ['body']);
und
apiGateway.core.utils.parseParametersToObject(params, ['id'])
Das SDK macht den richtigen Anruf.
Fehle ich etwas in meiner Konfiguration oder gibt es einen Fehler im Code Generator?
Wenn Sie Wolkenformationen wie mich verwenden. Sie müssen es in der hinzufügen RequestParameters .
für eine Ressource wie diese / api / pets / {id} / attributes / {attrid} folgenden Code funktioniert
%Vor% Wenn Sie davon ausgehen, dass Sie eine Swagger-Definition zum Erstellen der API importieren, führt die Definition von parameters
auf Methoden- und nicht auf Pfadebene zu einem generierten SDK mit dem key
, das korrekt ausgeführt wird.
Obwohl die Definition von parameters
auf der Pfadebene gemäß der Swagger-Spezifikation korrekt ist und API Gateway sie in der erstellten API verwendet, scheint es, dass API Gateway sie in einigen Kontexten ignoriert.
Tags und Links amazon-web-services aws-api-gateway