Ich habe eine API mit Amazon API-Gateway eingerichtet und möchte Daten in Kinesis-Streams setzen. Amazon API Gateway hat eingebaute Unterstützung dafür. Aber wenn ich versuche, json Daten zu setzen, gibt es "Serialisierungsausnahme".wie JSON Daten mit Amazon API Gateway zu Kinesis Stream setzen
var data = {"ua_platform":"iPhone","ua_browsercodename":"Mozilla","ua_browserlanguage":"en-us","ua_header":"Mozilla\/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit\/601.1.46 (KHTML, like Gecko) Version\/9.0 Mobile\/13B143 Safari\/601.1","ua_browsername":"Netscape","key":"livestream_hindi",,"datetime_ut":"1458711871","datetime_dt":"2016-03-23","value":"15","source":"0","browser":"Mobile Safari-9.0.","os":"iOS-9.1.","device_detail":"iPhone Apple iPhone"};
var json = JSON.stringify(data);
var params = { 'ContentType' : 'application/json','Access-Control-Allow-Headers' : 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'};
var body = {"Data":json,
"StreamName":"XXXXXX",
"PartitionKey":"XXXX"
};
Danach ich mache eine Put-Anfrage
apigClient.functionPut(params, body, additionalParams)
.then(function(result){
//This is where you would put a success callback
console.log("success");
}).catch(function(result){
//This is where you would put an error callback
console.log("catch");
});
Die api gibt 200 ok zusammen mit der Serialisierung Ausnahme. In der Put-Anfrage wird angegeben, dass der "Daten" -Schlüssel in der Körpervariablen nur den "Blob" -Typ akzeptiert. Jetzt habe ich auch versucht, JSON-Daten in BLOB zu konvertieren, aber überhaupt kein Glück.
Ich bin nicht in der Lage herauszufinden, was ich falsch mache. Bitte helfen Sie.
Vielen Dank für die Hilfe. Allerdings habe ich das Problem behoben. Ich muss die stringified Daten in base64encoded Daten konvertieren, um es in den Stream zu schieben. Ich habe JAVASCRIPT: btoa() -Funktion verwendet und es funktioniert wie erwartet. –