【发布时间】:2022-12-17 17:34:24
【问题描述】:
所以我正在尝试传递数据并使用 Node 从 Node.JS 端点执行与 cURL 非常相似的操作。 它挂起,没有反应,什么都没有。我什至没有看到是否有错误。它在 Postman 中没有响应。不确定这个想法是什么,因此这篇文章。
我发送给 POSTman 的数据是 json
{
"account_bank":"044",
"account_number":"0690000040",
"amount":"700000.25",
"narration":"test transfer",
"currency":"NGN",
"reference":"akhlm-pstmnpyt-rfxx007_PMCKDU_76554",
"debit_currency":"NGN"
}
和主要代码。看起来像这样:
app.post("/api/local-transfers", async function (req, res, next) {
try {
if (
!req.headers.authorization ||
!req.headers.authorization.startsWith("Bearer ") ||
!req.headers.authorization.split(" ")[1]
) {
return res.status(422).json({ message: "Please Provide Token!" });
}
var account_bank = req.body.account_bank;
var account_number = req.body.account_number;
var amount = req.body.amount;
var narration = req.body.narration;
var currency = req.body.currency;
var reference = req.body.refernce;
var debit_currency = req.body.debit_currency;
url = "https://api.flutterwave.com/v3/transfers";
fetch(url, {
method: "POST",
headers: {
Accept: "application/json",
"Content-type": "application/json",
Authorization: "Bearer FLWSECK_TEST-72fe360edef17334f4817a17407011bb-X",
},
body: JSON.stringify({
account_bank: account_bank,
account_number: account_number,
amount: amount,
narration: narration,
currency: currency,
reference: reference,
debit_currency: debit_currency,
}),
})
.then((response) => response.json())
.then((responseJson) => {
if (responseJson === "Transfer Queued Successfully") {
return res.send({
error: false,
data: response.json(),
message: "OK",
});
}
});
} catch (err) {
next(err);
}
});
它只是挂起,邮递员没有回应。有什么问题吗?
编辑
要求的.catch看起来像这样
app.post("/api/local-transfers", async function (req, res, next) {
try {
if (
!req.headers.authorization ||
!req.headers.authorization.startsWith("Bearer ") ||
!req.headers.authorization.split(" ")[1]
) {
return res.status(422).json({ message: "Please Provide Token!" });
}
var account_bank = req.body.account_bank;
var account_number = req.body.account_number;
var amount = req.body.amount;
var narration = req.body.narration;
var currency = req.body.currency;
var reference = req.body.refernce;
var debit_currency = req.body.debit_currency;
url = "https://api.flutterwave.com/v3/transfers";
fetch(url, {
method: "POST",
headers: {
Accept: "application/json",
"Content-type": "application/json",
Authorization: "Bearer FLWSECK_TEST-72fe360edef17334f4817a17407011bb-X",
},
body: JSON.stringify({
account_bank: account_bank,
account_number: account_number,
amount: amount,
narration: narration,
currency: currency,
reference: reference,
debit_currency: debit_currency,
}),
})
.then((response) => response.json())
.then((responseJson) => {
if (responseJson === "Transfer Queued Successfully") {
return res.send({
error: false,
data: response.json(),
message: "OK",
});
}
}).catch(error=>{ //added this catch here.
throw error;
});
} catch (err) {
next(err);
}
});
【问题讨论】:
-
我假设您使用的是 node-fetch,在这种情况下,fetch 函数是异步的,因此当 fetch 出错时,不会发回任何响应。在 fetch 调用中添加
.catch并检查它是否出错 -
@Salim,补充说,还是一样。介意我分享源吗??
-
我认为你的 if (responseJson === "Transfer Queued Successfully") 没有执行。 console log inside if condition 并检查是否有条件进入内部。
-
@MuhammadFazeel,responseJson 确实不起作用。我该怎么办?