希望在使用 aws lambda 和 api 网关的 nodejs 中以 JSONP 格式而不是 JSON 格式响应
Want response in JSONP format instead of JSON in nodejs using aws lambda and api gateway
想要在使用 aws lambda 和 api 网关的 nodejs 中以 JSONP 格式而不是 JSON 格式响应。
我的 lambda 代码是:
var axios = require("axios");
exports.handler = async (event) => {
return new Promise((resolve, reject) => {
var data = JSON.stringify({
username: event.username,
password: event.password,
});
var config = {
method: "post",
url: "http://demo.example.net/v2/api/login",
headers: {
"Content-type": "application/json",
},
data: data,
};
axios(config)
.then(function (response) {
const res = {
statusCode: 200,
body: "callbackParam([" + JSON.stringify(response.data) + "])",
};
resolve(res.body);
})
.catch(function (error) {
const err = {
statusCode: 401,
body: error,
};
reject(err.body);
});
});
};
得到如下响应:
"callbackParam([ {"token":"<token>","expiration": "2022-04-28T08:00:25Z"}])"
任何人都可以帮助我实现将此响应字符串转换为 jsonp 所需的额外内容吗?
我预期的响应是 callbackParam([{}])
我想您只需要用适当的 content-type 和 JavaScript 资源的正文来响应。
您也会成为 explicit promise construction anti-pattern 的牺牲品,所以最好也避免这种情况
exports.handler = async ({ username, password }) => {
const { data } = await axios.post("http://demo.example.net/v2/api/login", {
username,
password,
});
return {
statusCode: 200,
headers: {
"content-type": "application/javascript",
},
body: `callbackParam(${JSON.stringify([data])})`,
};
};
想要在使用 aws lambda 和 api 网关的 nodejs 中以 JSONP 格式而不是 JSON 格式响应。 我的 lambda 代码是:
var axios = require("axios");
exports.handler = async (event) => {
return new Promise((resolve, reject) => {
var data = JSON.stringify({
username: event.username,
password: event.password,
});
var config = {
method: "post",
url: "http://demo.example.net/v2/api/login",
headers: {
"Content-type": "application/json",
},
data: data,
};
axios(config)
.then(function (response) {
const res = {
statusCode: 200,
body: "callbackParam([" + JSON.stringify(response.data) + "])",
};
resolve(res.body);
})
.catch(function (error) {
const err = {
statusCode: 401,
body: error,
};
reject(err.body);
});
});
};
得到如下响应:
"callbackParam([ {"token":"<token>","expiration": "2022-04-28T08:00:25Z"}])"
任何人都可以帮助我实现将此响应字符串转换为 jsonp 所需的额外内容吗?
我预期的响应是 callbackParam([{}])
我想您只需要用适当的 content-type 和 JavaScript 资源的正文来响应。
您也会成为 explicit promise construction anti-pattern 的牺牲品,所以最好也避免这种情况
exports.handler = async ({ username, password }) => {
const { data } = await axios.post("http://demo.example.net/v2/api/login", {
username,
password,
});
return {
statusCode: 200,
headers: {
"content-type": "application/javascript",
},
body: `callbackParam(${JSON.stringify([data])})`,
};
};