如何解决如何使用POST JSON正文从当前API内部发布到外部API?
背景:
我有一个当前的Express.js API,可以接受GET请求。
然后,控制器方法必须接受该请求并构造一个JSON对象,然后将其发布到另一个完全外部的API。然后,它必须从那个外部API获得响应,然后以其自己响应进行通信。
当前代码:
const request = require("request");
exports.requestForExternalInfo = asyncHandler(async (req,res,next) => {
// this is the JSON I want to include in the call to an external API:
let externalPostType = {
"carInfo": {
"InfoType": "VIN"
}
};
request.post("https://externaldomain.com/api/v1/carinforequest",externalPostType,(error,response,body) => {
const res = JSON.parse(body)
});
res.status(200).json({
success: true,data: res,});
});
问题:
Express.js是否可以处理此问题?我不知道我当前使用的“请求”包是否是正确的解决方案。
更新:
我可以使用邮递员生成的呼叫解决此问题。事实证明,Postman将为您提供独立调用另一个API所需的确切语法。 (只要您在Postman中构造了独立的API调用,并使其与所有必要的标头和正文一起使用即可。)
这是解决问题的简单方法;否则,如果您想探索另一个可能的答案,则可以尝试以下Rahul Pal的答案。我会把他标记为首选解决方案,但是老实说,我觉得更简单的方法是尝试使用Postman提供的语法。
邮递员解决方案:
在Postman工具中(如果尚未安装,则必须独立安装和使用-这是一个非常常见的API测试工具):
-
选择“ Nodejs-Axios”
-
复制代码并将其粘贴到适当的位置
-
确保也导入Axios
const axios = require(“ axios”);
希望这种捷径可以帮助其他人,因为得益于Postman的开发人员,因为它确实为我所需要的提供了快速的解决方案。
解决方法
您可以在外部API请求完成后将响应发送回您自己的服务器 您可以在请求包的回调处理程序中调用res.send。
exports.requestForExternalInfo = asyncHandler(async(req,res) => {
let externalPostType = {
"carInfo": {
"InfoType": "VIN"
}
};
request.post("https://externaldomain.com/api/v1/carinforequest",externalPostType,(error,response,body) => {
let res = JSON.parse(body)
/* send the response to you server from inside this request callback handler */
res.status(200).json({
success: true,data: res,});
});
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。