Error: Request failed with status code 400 - AXIOS NODEJS

15,917

I added 'Content-Type': 'application / json' in the headers and it worked

Share:
15,917
Wellington Chrystian
Author by

Wellington Chrystian

Updated on December 18, 2022

Comments

  • Wellington Chrystian
    Wellington Chrystian over 1 year

    I have a problem connecting to the api by axios Error: Request failed with status code 400

    Can someone help me please?

    My services/api.js: `

    const axios = require("axios");
    
    const api = axios.create({
      baseURL: "https://url.com"
    });
    
    api.interceptors.request.use(async config => {
        config.headers.access_token = `token123`;  
        return config;
    });
    
    module.exports = api;
    

    My controller:

     const api = require('services/api');
        router.post('/', async (req, res) => {    
           try {
             const response = await api.post("/api", JSON.stringify(data));
             return response;
            } catch (err) {          
              return res.status(400).send({ erro: err })
            }
        })
    
        module.exports = app => app.use('/routes', router)
    

    But while I make the request, I get the error

    {
      "erro": {
        "message": "Request failed with status code 400",
        "name": "Error",
        "stack": "Error: Request failed with status code 400\n    at createError (/Library/WebServer/Documents/api/node_modules/axios/lib/core/createError.js:16:15)\n    at settle (/Library/WebServer/Documents/api/node_modules/axios/lib/core/settle.js:17:12)\n    at IncomingMessage.handleStreamEnd (/Library/WebServer/Documents/api-nex/node_modules/axios/lib/adapters/http.js:236:11)\n    at IncomingMessage.emit (events.js:228:7)\n    at endReadableNT (_stream_readable.js:1185:12)\n    at processTicksAndRejections (internal/process/task_queues.js:81:21)",
        "config": {
          "url": "/api",
          "method": "post",
          "data": "{"\myjson\": "\json\"}",
          "headers": {
            "Accept": "application/json, text/plain, */*",
            "Content-Type": "application/x-www-form-urlencoded",
            "access_token": "token123",
            "User-Agent": "axios/0.19.2",
            "Content-Length": 398
          },
          "baseURL": "https://url.com",
          "transformRequest": [
            null
          ],
          "transformResponse": [
            null
          ],
          "timeout": 0,
          "xsrfCookieName": "XSRF-TOKEN",
          "xsrfHeaderName": "X-XSRF-TOKEN",
          "maxContentLength": -1
        }
      }
    }
    
    • shkaper
      shkaper about 4 years
      It looks like you're sending JSON data with application/x-www-form-urlencoded content type - something's not right here. What kind of data does your API really expect?
    • Wellington Chrystian
      Wellington Chrystian about 4 years
      The API expects JSON format so I used JSON.stringify to convert. I did a test with lib request using the same data and it worked but with axios it didn't work
    • Wellington Chrystian
      Wellington Chrystian about 4 years
      I did change in my headers but didn't work too. const response = await api.post("api", JSON.stringify(data), { headers: { 'Content-Type': 'application/json', } } );