Javascript 如何在node.js中使用axios设置授权令牌
我想在api测试中使用axios。要初始化客户端,我首先需要设置身份验证令牌,我也希望通过axios获得身份验证令牌。如何从异步代码中获得身份验证令牌Javascript 如何在node.js中使用axios设置授权令牌,javascript,node.js,axios,Javascript,Node.js,Axios,我想在api测试中使用axios。要初始化客户端,我首先需要设置身份验证令牌,我也希望通过axios获得身份验证令牌。如何从异步代码中获得身份验证令牌 const a = require('axios'); getToken = () => { var axios =a.create({ baseURL: 'http://local.v2.app.com/api/auth/v1.0', headers: {'Content-Type': 'ap
const a = require('axios');
getToken = () => {
var axios =a.create({
baseURL: 'http://local.v2.app.com/api/auth/v1.0',
headers: {'Content-Type': 'application/json'},
});
return axios.post('/credentials/login', {
username: '1@test.com',
password: 'Test@1234'
})
.then(function (response) {
return response.data.data.token;
})
.catch(function (error) {
console.log(error);
});
}
const client=a.create({
baseURL: 'http://local.v2.app.com/api/auth/v1.0',
headers: {
'Content-Type': 'application/json',
'Authorization': getToken()
},
});
module.exports = client;
首先,getToken应该是异步的(或者只是返回承诺): 然后您可以模拟
请求
:
const client = a.create({
baseURL: 'http://local.v2.app.com/api/auth/v1.0',
headers: {
'Content-Type': 'application/json'
}
})
const request = client.request
const addToken = (token) => (data, headers) => {
headers.Authorization = token
return data
}
client.request = (config = {}) => new Promise(async (resolve, reject) => {
token = await getToken()
if (!config.transformRequest) config.transformRequest = []
config.transformRequest.push(addToken(token))
request(config).then(resolve, reject)
})
module.exports = client
是的,有点乱,请随意重构
axios具有request
功能,该功能可发出请求,其他如get、post等都是别名。这段代码首先修补请求以获取令牌,然后继续请求
transformRequest取自github上的axious自述文件,其中有一条注释“您可以修改headers对象”,因此它是合法的
好问题,我不知道为什么-1我理解正确吗,既然client.request是promise,我不能立即使用这个客户端,因为可能没有加载令牌?而且需要同步使用或尽管使用。那么,听起来真的很不方便。嘿,你打算使用.request或.get或.post不象承诺吗?在我的假设中,我的答案不应该改变进一步使用axios的通常方式。我希望像这样使用它
const client=require('./client');获取('/demo/search')
以及如何获得响应?我想我需要同步使用它等待
const client = a.create({
baseURL: 'http://local.v2.app.com/api/auth/v1.0',
headers: {
'Content-Type': 'application/json'
}
})
const request = client.request
const addToken = (token) => (data, headers) => {
headers.Authorization = token
return data
}
client.request = (config = {}) => new Promise(async (resolve, reject) => {
token = await getToken()
if (!config.transformRequest) config.transformRequest = []
config.transformRequest.push(addToken(token))
request(config).then(resolve, reject)
})
module.exports = client