gpt4 book ai didi

javascript - axios 获取请求返回请求失败,错误 400

转载 作者:行者123 更新时间:2023-12-01 17:32:44 27 4
gpt4 key购买 nike

我需要帮助来解决这个问题。我是 react native 和 javascript 的新手。现在我正在尝试将 react native 应用程序与 API 连接起来。这个过程需要我先通过 axios.post 获取 token 在我能做之前axios.get获取数据。

长话短说,下面是我的代码片段。

... // code 
const TOKEN_URL = 'https://test.co/testing/tokens'
const DATA_URL = 'https://test.co/testing/data/page1'

const getToken = () => {
axios.post(TOKEN_URL, {
email: 'email',
password: 'password',
role: 'user'
})
.then((response) => {
//console.log(response.data.token);
return response.data.token;
})
.catch((error) => {
console.log(error);
});
};

//'export' here is for use in other code: example onPress function
export const fetchDriver = () => {
const config = {
headers: {
'Bearer': getToken()
}
};

axios.get(DRIVER_URL, config)
.then((response) => {
console.log(response);
})
.catch((error) => {
console.log(error);
});
};

我预期的控制台日志将是这样的
{
"timestamp": 1510038433,
"verb": "GET",
"object": "student",
"data": {
"age": "12",
"id": "90000",
"name": "Test Student",
"emergencyName": "asd",
"createdAt": "2017-10-04T05:39:39+00:00"
}
}

但我不断收到错误说 Request failed with status code 400
我正在使用 Expo 来开发这个应用程序。

错误的详细信息是这样的
- node_modules/axios/lib/core/createError.js:16:24 in createError
- node_modules/axios/lib/core/settle.js:19:6 in settle
- node_modules/axios/lib/adapters/xhr.js:78:13 in handleLoad
- node_modules/event-target-shim/lib/event-target.js:172:43 in dispatchEvent
- node_modules/react-native/Libraries/Network/XMLHttpRequest.js:540:23 in
setReadyState
- node_modules/react-native/Libraries/Network/XMLHttpRequest.js:381:25 in
__didCompleteResponse
- node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js:182:12 in
emit
- node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:306:47 in
__callFunction
- node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:108:26 in
<unknown>
- node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:269:6 in
__guard
- node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:107:17 in
callFunctionReturnFlushedQueue

如果错误来自那里,我无权编辑 api/server。

如果我在片段中遗漏了任何一点,请帮助我。
感谢您的帮助和建议。

最佳答案

旁注,您忘记在 getToken 中返回

我会告诉你为什么会发生这种情况。
Promise 是异步的,你的 axios 调用也是如此。因此,您需要以某种方式等待第一次通话结果。否则,如果你把 const a = axiosCall()并尝试立即使用它 a值为 Pending (不是字符串)。

为此,您可以使用 Promise 或 async/await。我将向您展示正确的方法与 promise 。我刚刚复制了您的代码并对其进行了一些重构。还要记住 driver仍然是一个 promise ,所以你需要把它当作其他事情来处理。

const getToken = () => {
axios.post(TOKEN_URL, {
email: 'email',
password: 'password',
role: 'user'
})
.then((response) => {
//console.log(response.data.token);
return response.data.token;
})
.catch((error) => {
console.log(error);
});
};

//'export' here is for use in other code: example onPress function
export const fetchDriver = () => {
const config = {
headers: {
'Bearer': getToken()
}
};

axios.get(DRIVER_URL, config)
.then((response) => {
console.log(response);
})
.catch((error) => {
console.log(error);
});
};

关于javascript - axios 获取请求返回请求失败,错误 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47152830/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com