提问者:小点点

使用Axios请求API-未经授权


我正在尝试使用Axios请求API:

const axios = require ("axios")
const httpsAgent = require('https-agent')
const https = require('https') 

const instance = axios ({
    httpsAgent: new https.Agent({
        rejectUnauthorized: false
    }),
    auth: {
        username: 'username' 
    }
})
axios.post("url_api").then(function(response){
    console.log(response.data)
}).then(function(response){
    console.log(response.data)
}).catch((e)=>{console.log(e)})

但显示错误401:

TypeError [ERR_INVALID_ARG_TYPE]: The "url" argument must be of type string

    response: {
    status: 401,
    statusText: 'Unauthorized',
...
    },
    data: 'Unauthorized'
  },
  isAxiosError: true,
  toJSON: [Function: toJSON]
}

还有什么配置要做吗?失眠/邮差工作


共2个答案

匿名用户

axios.post("url_api",body,header)

匿名用户

你这里的代码

const instance = axios ({
    httpsAgent: new https.Agent({
        rejectUnauthorized: false
    }),
    auth: {
        username: 'username' 
    }
})

它已经相当于启动一个请求,但问题是您还没有传递强制的参数

因此将其修改为

const request = axios ({
        httpsAgent: new https.Agent({
            rejectUnauthorized: false
        }),
         method: 'post',
         url: 'your_api_url_here', // important change
        auth: {
            username: 'username' 
        }
    })

或者你也可以简单地跟着做

axios.post('url_here', data );

最后,您的代码必须如下所示

const instance = axios({
    httpsAgent: new https.Agent({
      rejectUnauthorized: false
    }),
    auth: {
      username: 'username'
    },
    method: 'post',
    url: 'your_api_url_here',
  })
  .then(response => console.log(response.data))
  .catch((e) => console.log(e));

选择其中之一,但不要同时选择。