4

Wie kann ich ein JSON-Objekt wie {val: 1} als Abfrageparameter an meine Lambda-Funktion übergeben?
Nach Standardized way to serialize JSON to query string? i meine JSON-Objekt URL-kodiert und die folgende angefordert: mysite.com/path?json=%7B%22val%22%3A%201%7DSo übergeben Sie eine JSON-Zeichenfolge als Abfrage an das API-Gateway Parameter

Als requestTemplates habe ich versucht, die folgenden zwei Optionen

  1. "json": "$input.params().querystring.json"
  2. "json": "$util.parseJson($input.params().querystring.json)"

Aber ich habe diese Fehlermeldung:

{ "message": Unexpected Zeichen (\ 'v \' (Code 118)): „Es konnte keine Anfrage Körper in json parsen wurde Komma getrennten OBJECT Einträge \ n an [Quelle erwartet: [B @ 37a2970e ; Zeile: 1, Spalte: 47] "}

Wenn ich so die Query-String kodieren nicht: mysite.com/path?json={"val":1} Ich erhalte einen 400-Fehler

Antwort

3
  1. Ihre Mapping-Vorlage keine gültige JSON erzeugt, müssen Sie wickeln Sie den Schlüssel/Wert-Paar in geschweiften Klammern
  2. ich denke, Sie wollen nicht den Wert in Anführungszeichen wickeln, es wird ein String und kein Objekt anders sein
  3. Sie $util.urlDecode verwenden können, um URL-kodierten Strings zu dekodieren

Ihre Mapping-Vorlage sollte wie folgt aussehen:

{ 
    "json": { 
    "val": 1 
    } 
} 

Wenn Sie wollen, dass der Abfragezeichenfolgeflag JSON wird weitergegeben:

{"json": $util.urlDecode($input.params().querystring.json)} 

Für mysite.com/path?json=%7B%22val%22%3A%201%7D diese Mapping-Vorlage in der folgenden JSON führen Verwenden Sie die Stammebene für Ihre Lambda-Funktion als Zuordnungsvorlage:

$util.urlDecode($input.params().querystring.json) 
+0

Super! Vielen Dank – Rentrop

+0

Sie sparen meinen Tag! Vielen Dank :) –

Verwandte Themen