我试图像在callbackname(data.strified)中一样返回jsonp
callback( null,
( !!event.cb && event.cb.length > 0 )
? event.cb.replace( /[^a-z0-9_]/i, '' ) + '(' + JSON.stringify( data ) + ')'
: data
);
我快速而肮脏的方式现在返回数据,如果给出?cb = test,则返回:
"test({\"valid\":false,\"data\":false})"
有没有摆脱引号和转义字符? API应该使用和不使用回调设置。
答案 0 :(得分:5)
鉴于你有这种类型的lambda函数:
exports.handler = function(event, context) {
var data={"test":"data"};
context.done( null,
( !!event.cb && event.cb.length > 0 )
? event.cb.replace( /[^a-z0-9_]/i, '' ) + '(' + JSON.stringify( data ) + ')'
: data
);
};
当你给它一个像
这样的事件时{
"cb": "callback"
}
它会给出这个输出:
"callback({\"test\":\"data\"})"
到目前为止,这么好。现在您来到API网关,在集成响应部分中,您可以编写此
$util.parseJson($input.json('$'))
当您调用API网关端点时,将获得callback({"test":"data"})
作为输出。
答案 1 :(得分:1)
答案 2 :(得分:1)
正如ÇağatayGürtürk指出的那样,你将结果字符串化并将其返回。
但是,如果您的lambda也接受非回调,则可以签入VTL模板:
API网关和集成响应部分:
#if($input.params('callback') != "")
$util.parseJson($input.json('$'))
#else
$input.json('$')
#end