使用 `requestjs` 从 Node Js 调用 AWS lambda 端点时总是出现 502 错误
Always get 502 error when calling AWS lambda endpoint from Node Js using `requestjs`
尝试 post 使用 Nodejs 请求包在我们的 AWS 无服务器 api 中获取数据,但总是出现 502 错误并且可以 post 来自前端应用程序的数据(React 或 Jquery).
var dataToPost = {
name: 'ABC',
address: 'XYZ'
}
request(
{ method: 'POST'
, uri: 'url here...'
, headers: {
'User-Agent': 'request'
} , multipart:
[ { 'content-type': 'application/json'
, body: JSON.stringify(dataToPost)
}
]
}
, function (error, response, body) {
if(response.statusCode == 201){
console.log('document saved')
} else {
console.log('error: '+ response.statusCode)
console.log(body)
}
}
)```
如果您能够使用 React 和 Jquery post 数据,那么您可能没有发出 post 请求 correctly.Try 此代码用于 post请求:
const request = require('request');
var dataToPost = {
name: 'ABC',
address: 'XYZ'
}
const options = {
url: 'url goes here',
json: true,
body: dataToPost
};
request.post(options, (err, res, body) => {
if (err) {
return console.log(err);
}
console.log(`Status: ${res.statusCode}`);
console.log(body);
});
或者你也可以使用 axios
这使得代码更具可读性并且有内置的 promise 支持:
const axios = require('axios');
var dataToPost = {
name: 'ABC',
address: 'XYZ'
}
const url = 'put url here'
axios.post(url, data)
.then((res) => {
console.log(`Status: ${res.status}`);
console.log('Body: ', res.data);
}).catch((err) => {
console.error(err);
});
还要检查 AWS Lmbada 日志说的是什么。
尝试 post 使用 Nodejs 请求包在我们的 AWS 无服务器 api 中获取数据,但总是出现 502 错误并且可以 post 来自前端应用程序的数据(React 或 Jquery).
var dataToPost = {
name: 'ABC',
address: 'XYZ'
}
request(
{ method: 'POST'
, uri: 'url here...'
, headers: {
'User-Agent': 'request'
} , multipart:
[ { 'content-type': 'application/json'
, body: JSON.stringify(dataToPost)
}
]
}
, function (error, response, body) {
if(response.statusCode == 201){
console.log('document saved')
} else {
console.log('error: '+ response.statusCode)
console.log(body)
}
}
)```
如果您能够使用 React 和 Jquery post 数据,那么您可能没有发出 post 请求 correctly.Try 此代码用于 post请求:
const request = require('request');
var dataToPost = {
name: 'ABC',
address: 'XYZ'
}
const options = {
url: 'url goes here',
json: true,
body: dataToPost
};
request.post(options, (err, res, body) => {
if (err) {
return console.log(err);
}
console.log(`Status: ${res.statusCode}`);
console.log(body);
});
或者你也可以使用 axios
这使得代码更具可读性并且有内置的 promise 支持:
const axios = require('axios');
var dataToPost = {
name: 'ABC',
address: 'XYZ'
}
const url = 'put url here'
axios.post(url, data)
.then((res) => {
console.log(`Status: ${res.status}`);
console.log('Body: ', res.data);
}).catch((err) => {
console.error(err);
});
还要检查 AWS Lmbada 日志说的是什么。