2

Ziel: Um die Methode zu erhalten, mit der eine Ressource (Route) auf AWS-API-Gateway aufgerufen wurde.Anfrage Körper überschreibt die HTTP-Methode?

Mein Fortschritt: Ich habe einen Endpunkt, der GET-, PATCH- und POST-Methoden aufweist, die während des Integrationsanforderungsschritts einer Vorlage zugeordnet wurden. Die Vorlage für PATCH sieht wie folgt aus:

"editJobsTemplate": { 
    "application/json": { 
    "method": "$context.httpMethod", 
    "job": "$input.json('$.job')" 
    } 
} 

mit this document erstellt.

Probleme: Wenn der PATCH Körper leer bekomme ich die reponse wie:

{ 
    "eventType": { 
    "method": "PATCH", 
    "job": "" 
    } 
} 

aber wenn es ein Objekt mit ‚Job‘ als Schlüssel im Körper ...

gesendet
{ 
    "job":"some text value" 
} 

dann sieht die Antwort wie:

{ 
    "eventType": { 
    "job": "some text value" 
    } 
} 

BEARBEITEN 1

This ist ein Screenshot der Vorlage aus dem Ressourcenfenster API-Gateway.

und ich getestet auf Postman mit this result

EDIT 2 This zu bekommen ist der Content-Type-Header zu zeigen, wird auf application/json, gemäß der Antwort von b.b3rn4rd und this zeigt Die Antwort bekomme ich danach.

+0

Ist der erste Code tatsächlich die Vorlage einfügen oder ist das der Swagger-Auszug? Haben Sie dies in der Konsole mit der Testfunktion getestet? –

+0

Ich verwende Serverless für meine Bereitstellungen, daher habe ich Screenshots hinzugefügt, um Ihren Kommentar zu adressieren, die erste Paste ist die Vorlage. Ich habe auch Screenshots für den Test auf Postboten hinzugefügt. –

Antwort

1

Wenn Sie Ihre Endpunkte aufrufen, stellen Sie sicher, dass Sie den entsprechenden Inhaltstyp-Header angeben. In Ihrem Fall ist es wahrscheinlich Content-Type: application/json, andernfalls wird die Anfragezuordnung übersprungen und die Anfrage wird an (lambda?) Übergeben, wie es ist.

Außerdem kann ich bereits vor Ort, ein weiteres potenzielles Problem mit "job": "$input.json('$.job')",

sein sollte:

"job" : $util.escapeJavaScript($input.json('$.job')) keine Anführungszeichen!

+0

Ich habe die Kopfzeile hinzugefügt, ich habe die Screenshots in meiner Bearbeitung hinzugefügt. Ich bekomme jetzt eine schlechte Zeichenfolge als Antwort. Ich führe gerade einen Test durch, um die Methode von einer Anfrage zu erhalten, also benutze das escapeJavaScript-Dienstprogramm nicht, danke für das Heads-up. –

+0

Ich habe die Zitate nicht sorgfältig gelesen, das hat funktioniert. –

+0

Ich habe nicht daran gezweifelt, hatte ähnliches Problem, als begann mit Gateway :) –

Verwandte Themen