【发布时间】:2020-04-24 23:51:53
【问题描述】:
现在我有以下信息(用户数据)要保存。我必须将它发送到两个 API(URL)。像这样。
http://api_url/users
http://api_url/user-card
现在我需要将数据发送到几个 API (URL) 以保存用户和用户的卡信息。 我有以下数据:
const [data] = useState({
last_name: "",
first_name: "",
middle_name: "",
card_number: "",
card_given_date: "",
});
并且喜欢这个使用 axios 的 post 请求。
api.post("/users", params)
.then(res => {
let response = res.data;
console.log("Saved");
setLoadingBtn(false);
window.location = "/user/card/" + response.id;
})
.catch(e => {
console.log(e.toString());
setLoadingBtn(false);
})
它适用于一个 API。我需要将名字、姓氏和中间名发送到 /users,并将 user_id、card_number 和 card_given_date 发送到第二个 api。我可以使用哪些变体同时向多个 API 发送 POST 请求? 谢谢!
更新!这是另一个逻辑。 axios.all() 和 promises.all() 是获取请求的好方法。但是如果我们使用它们。假设表中的某个字段为空或填充了错误。在这种情况下,错误只被转移到一个表中,而另一个被保存。这会导致逻辑错误。 像这样:
const addUserInfo = api.postItem("users", params);
const addCardInfo = api.postItem("user-card", params2);
Promise.all([addUserInfo, addCardInfo])
.then(res => {
let response = res.data;
console.log("Saved");
setLoadingBtn(false);
window.location = "/user/card/" + response.id;
})
.catch(e => {
console.log(e);
console.log(e.toString());
setLoadingBtn(false);
});
这样会导致逻辑混乱。
【问题讨论】:
-
第一次调用后多了一个 api.post("/user-card", params) 有什么问题?
-
@FleminAdambukulam 我认为这不是一个好主意。每个数据都应该并行存储。
-
好吧,无论你使用什么,每个 API 都会被一个接一个地调用,因为 javascript 是单线程的。我不明白并行存储是什么,但假设你必须将所有内容存储在一起,这需要在服务器端处理。一个新的 API,它接受所有参数,然后调用其他两个 api 可能
-
@FleminAdambukulam 我想处理发布请求。这里有一个缺点。如果出现问题,它会保存到第一个表中,但不会保存到第二个表中。逻辑被打破了。看起来我编辑的问题意味着。
标签: reactjs api request axios store