![](/img/trans.png)
[英]How to decompress gziped AWS gateway api lambda response in react?
[英]How to get a correct response from an API on AWS lambda
這是我第一次向 Stack-Overflow 社區征求意見。 幾天以來,我一直在學習使用與 GETEWAY 連接的 AWS lambda 服務。 我需要在 API 上執行 GET,但問題是我經常收到一個空響應。
這是我的代碼示例,可免費訪問 API:
var getApi= async function(event) {
var x = await axios.get(url)
}
var getResponse = async function(){
var data= await getApi()
if (data.status ==200){
return data
}
}
exports.handler = async function() {
return getResponse().then(res => {
const response = {
statusCode: 200,
body: JSON.stringify(res),
};
return response
}).catch(error => { return error})
};
非常感謝您的幫助,
我建議在整個文件中使用console.log()
進行調試。 默認情況下,您應該能夠在 Cloudwatch 中看到對這些控制台日志的響應:)
在這里閱讀更多:
https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-logs.html
我自己最近遇到了這個問題。 解決方案是:
JSON object 的全部內容將返回到網關。 查看此文檔: https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-lambda-authorizer-output.html
我還有一篇關於如何通過 Cloudformation YAML 文件配置網關的非常詳細的 Stackoverflow 帖子: AWS API Gateway with Lambda Authorizer
這是因為 node.js 異步調用。 您的 function 在異步調用返回之前完成運行。 我修復了一些代碼行。 我希望這可能對您有所幫助。
const getApi= async function() {
return await axios.get(url)
}
const getResponse = async function(){
const data= await getApi()
if (data.status ==200){
return data
}
}
exports.handler = async function() {
return await getResponse().then(res => {
const response = {
statusCode: 200,
body: JSON.stringify(res),
}
return response
}).catch(error => console.error(error))
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.