简体   繁体   中英

Request for an API with Axios - Unauthorized

I'm trying to make the request for an API, using Axios:

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)})

but it displays error 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]
}

Is there any more configuration to do? Insomnia/Postman works

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

The code you've here

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

It's already equivalent to initiating a request, but the problem is you've not passed the url and method parameter which is mandatory

So modify it to

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

Or you can simple follow and do

axios.post('url_here', data );

Finally, your code must look like this

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));

Choose either one of them but not both.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM