Javascript 如何将CURL请求转换为axios请求?
我刚刚成功地在这里卷曲:Javascript 如何将CURL请求转换为axios请求?,javascript,node.js,aws-lambda,axios,Javascript,Node.js,Aws Lambda,Axios,我刚刚成功地在这里卷曲: curl -X POST https://jenkins-url/job/MyJob/job/some-job/job/master/build --user myemail:mypassword -H 'Jenkins-Crumb: mycrumb' 现在我想在我的lambda中使用axios 所以我有这个: const axios = require('axios') exports.handler = async (event) => { co
curl -X POST https://jenkins-url/job/MyJob/job/some-job/job/master/build --user myemail:mypassword -H 'Jenkins-Crumb: mycrumb'
现在我想在我的lambda中使用axios
所以我有这个:
const axios = require('axios')
exports.handler = async (event) => {
const url = "my-url";
try {
const res = await axios.post(url, {}, {
auth: {
username: 'user',
password: 'passowrd'
},
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"Jenkins-Crumb": "my-crumb"
},
}).then(function(response) {
console.log('Authenticated');
}).catch(function(error) {
console.log('Error on Authentication');
});
console.log(res)
return {
statusCode: 200,
body: JSON.stringify(res)
}
} catch (e) {
console.log(e)
return {
statusCode: 400,
body: JSON.stringify(e)
}
}
};
但当我触发lambda时,它返回:失败,错误为“请求已完成但不正常”
不确定我是否在某个地方做错了什么,但似乎从CURL到axios的映射都是正确的您有一些问题:
.then(…)
处理程序中,您正在执行一个控制台日志,但没有从该函数返回任何内容。因此,res
将是未定义的
res
执行一个JSON.stringify
res
将是axios响应,而不是响应主体。串接axios响应是一个坏主意,因为它包含大量的对象引用和循环引用。您希望res.data
为您提供响应数据const axios = require('axios')
exports.handler = async (event) => {
const url = "my-url";
try {
const res = await axios.post(url, {}, {
auth: {
username: 'user',
password: 'passowrd'
},
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"Jenkins-Crumb": "my-crumb"
},
});
return {
statusCode: 200,
body: JSON.stringify(res.data)
}
} catch (e) {
console.log(e)
return {
statusCode: 400,
// Don't do JSON.stringify(e).
// e.response.data will be the axios response body,
// but e.response may be undefined if the error isn't an HTTP error
body: e.stack
}
}
};
如果您将
。然后
和从您的等待中捕获
续集,会发生什么情况?哪个错误处理程序正在记录该消息?您已经在等待axios调用,让catch处理程序获取错误并报告可能的错误。@Joe仍然没有成功。我已经在本地运行了这个函数,它可以正常工作。我还注释了axios部分并运行了lamba,它工作正常。因此,lambda中出现了一些与axios不一样但毫无意义的情况:/jenkins可能会拒绝ithmm仍然不工作:/cloudwatch logsalso仅供参考,我刚刚从lambda中取出此函数并在本地运行,它的行为符合预期,那么lambda做错了什么:/