Promise based HTTP client for the browser and node.js

Overview

axios

npm version CDNJS build status Gitpod Ready-to-Code code coverage install size npm downloads gitter chat code helpers

Promise based HTTP client for the browser and node.js

New axios docs website: click here

Table of Contents

Features

  • Make XMLHttpRequests from the browser
  • Make http requests from node.js
  • Supports the Promise API
  • Intercept request and response
  • Transform request and response data
  • Cancel requests
  • Automatic transforms for JSON data
  • Client side support for protecting against XSRF

Browser Support

Chrome Firefox Safari Opera Edge IE
Latest Latest Latest Latest Latest 11

Browser Matrix

Installing

Using npm:

$ npm install axios

Using bower:

$ bower install axios

Using yarn:

$ yarn add axios

Using jsDelivr CDN:

<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js">script>

Using unpkg CDN:

<script src="https://unpkg.com/axios/dist/axios.min.js">script>

Example

note: CommonJS usage

In order to gain the TypeScript typings (for intellisense / autocomplete) while using CommonJS imports with require() use the following approach:

const axios = require('axios').default;

// axios. will now provide autocomplete and parameter typings

Performing a GET request

const axios = require('axios');

// Make a request for a user with a given ID
axios.get('/user?ID=12345')
  .then(function (response) {
    // handle success
    console.log(response);
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  })
  .then(function () {
    // always executed
  });

// Optionally the request above could also be done as
axios.get('/user', {
    params: {
      ID: 12345
    }
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  })
  .then(function () {
    // always executed
  });  

// Want to use async/await? Add the `async` keyword to your outer function/method.
async function getUser() {
  try {
    const response = await axios.get('/user?ID=12345');
    console.log(response);
  } catch (error) {
    console.error(error);
  }
}

NOTE: async/await is part of ECMAScript 2017 and is not supported in Internet Explorer and older browsers, so use with caution.

Performing a POST request

axios.post('/user', {
    firstName: 'Fred',
    lastName: 'Flintstone'
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

Performing multiple concurrent requests

function getUserAccount() {
  return axios.get('/user/12345');
}

function getUserPermissions() {
  return axios.get('/user/12345/permissions');
}

Promise.all([getUserAccount(), getUserPermissions()])
  .then(function (results) {
    const acct = results[0];
    const perm = results[1];
  });

axios API

Requests can be made by passing the relevant config to axios.

axios(config)
// Send a POST request
axios({
  method: 'post',
  url: '/user/12345',
  data: {
    firstName: 'Fred',
    lastName: 'Flintstone'
  }
});
// GET request for remote image in node.js
axios({
  method: 'get',
  url: 'http://bit.ly/2mTM3nY',
  responseType: 'stream'
})
  .then(function (response) {
    response.data.pipe(fs.createWriteStream('ada_lovelace.jpg'))
  });
axios(url[, config])
// Send a GET request (default method)
axios('/user/12345');

Request method aliases

For convenience aliases have been provided for all supported request methods.

axios.request(config)
axios.get(url[, config])
axios.delete(url[, config])
axios.head(url[, config])
axios.options(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])
NOTE

When using the alias methods url, method, and data properties don't need to be specified in config.

Concurrency (Deprecated)

Please use Promise.all to replace the below functions.

Helper functions for dealing with concurrent requests.

axios.all(iterable) axios.spread(callback)

Creating an instance

You can create a new instance of axios with a custom config.

axios.create([config])
const instance = axios.create({
  baseURL: 'https://some-domain.com/api/',
  timeout: 1000,
  headers: {'X-Custom-Header': 'foobar'}
});

Instance methods

The available instance methods are listed below. The specified config will be merged with the instance config.

axios#request(config)
axios#get(url[, config])
axios#delete(url[, config])
axios#head(url[, config])
axios#options(url[, config])
axios#post(url[, data[, config]])
axios#put(url[, data[, config]])
axios#patch(url[, data[, config]])
axios#getUri([config])

Request Config

These are the available config options for making requests. Only the url is required. Requests will default to GET if method is not specified.

{
  // `url` is the server URL that will be used for the request
  url: '/user',

  // `method` is the request method to be used when making the request
  method: 'get', // default

  // `baseURL` will be prepended to `url` unless `url` is absolute.
  // It can be convenient to set `baseURL` for an instance of axios to pass relative URLs
  // to methods of that instance.
  baseURL: 'https://some-domain.com/api/',

  // `transformRequest` allows changes to the request data before it is sent to the server
  // This is only applicable for request methods 'PUT', 'POST', 'PATCH' and 'DELETE'
  // The last function in the array must return a string or an instance of Buffer, ArrayBuffer,
  // FormData or Stream
  // You may modify the headers object.
  transformRequest: [function (data, headers) {
    // Do whatever you want to transform the data

    return data;
  }],

  // `transformResponse` allows changes to the response data to be made before
  // it is passed to then/catch
  transformResponse: [function (data) {
    // Do whatever you want to transform the data

    return data;
  }],

  // `headers` are custom headers to be sent
  headers: {'X-Requested-With': 'XMLHttpRequest'},

  // `params` are the URL parameters to be sent with the request
  // Must be a plain object or a URLSearchParams object
  params: {
    ID: 12345
  },

  // `paramsSerializer` is an optional function in charge of serializing `params`
  // (e.g. https://www.npmjs.com/package/qs, http://api.jquery.com/jquery.param/)
  paramsSerializer: function (params) {
    return Qs.stringify(params, {arrayFormat: 'brackets'})
  },

  // `data` is the data to be sent as the request body
  // Only applicable for request methods 'PUT', 'POST', 'DELETE , and 'PATCH'
  // When no `transformRequest` is set, must be of one of the following types:
  // - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams
  // - Browser only: FormData, File, Blob
  // - Node only: Stream, Buffer
  data: {
    firstName: 'Fred'
  },
  
  // syntax alternative to send data into the body
  // method post
  // only the value is sent, not the key
  data: 'Country=Brasil&City=Belo Horizonte',

  // `timeout` specifies the number of milliseconds before the request times out.
  // If the request takes longer than `timeout`, the request will be aborted.
  timeout: 1000, // default is `0` (no timeout)

  // `withCredentials` indicates whether or not cross-site Access-Control requests
  // should be made using credentials
  withCredentials: false, // default

  // `adapter` allows custom handling of requests which makes testing easier.
  // Return a promise and supply a valid response (see lib/adapters/README.md).
  adapter: function (config) {
    /* ... */
  },

  // `auth` indicates that HTTP Basic auth should be used, and supplies credentials.
  // This will set an `Authorization` header, overwriting any existing
  // `Authorization` custom headers you have set using `headers`.
  // Please note that only HTTP Basic auth is configurable through this parameter.
  // For Bearer tokens and such, use `Authorization` custom headers instead.
  auth: {
    username: 'janedoe',
    password: 's00pers3cret'
  },

  // `responseType` indicates the type of data that the server will respond with
  // options are: 'arraybuffer', 'document', 'json', 'text', 'stream'
  //   browser only: 'blob'
  responseType: 'json', // default

  // `responseEncoding` indicates encoding to use for decoding responses (Node.js only)
  // Note: Ignored for `responseType` of 'stream' or client-side requests
  responseEncoding: 'utf8', // default

  // `xsrfCookieName` is the name of the cookie to use as a value for xsrf token
  xsrfCookieName: 'XSRF-TOKEN', // default

  // `xsrfHeaderName` is the name of the http header that carries the xsrf token value
  xsrfHeaderName: 'X-XSRF-TOKEN', // default

  // `onUploadProgress` allows handling of progress events for uploads
  // browser only
  onUploadProgress: function (progressEvent) {
    // Do whatever you want with the native progress event
  },

  // `onDownloadProgress` allows handling of progress events for downloads
  // browser only
  onDownloadProgress: function (progressEvent) {
    // Do whatever you want with the native progress event
  },

  // `maxContentLength` defines the max size of the http response content in bytes allowed in node.js
  maxContentLength: 2000,

  // `maxBodyLength` (Node only option) defines the max size of the http request content in bytes allowed
  maxBodyLength: 2000,

  // `validateStatus` defines whether to resolve or reject the promise for a given
  // HTTP response status code. If `validateStatus` returns `true` (or is set to `null`
  // or `undefined`), the promise will be resolved; otherwise, the promise will be
  // rejected.
  validateStatus: function (status) {
    return status >= 200 && status < 300; // default
  },

  // `maxRedirects` defines the maximum number of redirects to follow in node.js.
  // If set to 0, no redirects will be followed.
  maxRedirects: 5, // default

  // `socketPath` defines a UNIX Socket to be used in node.js.
  // e.g. '/var/run/docker.sock' to send requests to the docker daemon.
  // Only either `socketPath` or `proxy` can be specified.
  // If both are specified, `socketPath` is used.
  socketPath: null, // default

  // `httpAgent` and `httpsAgent` define a custom agent to be used when performing http
  // and https requests, respectively, in node.js. This allows options to be added like
  // `keepAlive` that are not enabled by default.
  httpAgent: new http.Agent({ keepAlive: true }),
  httpsAgent: new https.Agent({ keepAlive: true }),

  // `proxy` defines the hostname, port, and protocol of the proxy server.
  // You can also define your proxy using the conventional `http_proxy` and
  // `https_proxy` environment variables. If you are using environment variables
  // for your proxy configuration, you can also define a `no_proxy` environment
  // variable as a comma-separated list of domains that should not be proxied.
  // Use `false` to disable proxies, ignoring environment variables.
  // `auth` indicates that HTTP Basic auth should be used to connect to the proxy, and
  // supplies credentials.
  // This will set an `Proxy-Authorization` header, overwriting any existing
  // `Proxy-Authorization` custom headers you have set using `headers`.
  // If the proxy server uses HTTPS, then you must set the protocol to `https`. 
  proxy: {
    protocol: 'https',
    host: '127.0.0.1',
    port: 9000,
    auth: {
      username: 'mikeymike',
      password: 'rapunz3l'
    }
  },

  // `cancelToken` specifies a cancel token that can be used to cancel the request
  // (see Cancellation section below for details)
  cancelToken: new CancelToken(function (cancel) {
  }),

  // `decompress` indicates whether or not the response body should be decompressed 
  // automatically. If set to `true` will also remove the 'content-encoding' header 
  // from the responses objects of all decompressed responses
  // - Node only (XHR cannot turn off decompression)
  decompress: true // default

}

Response Schema

The response for a request contains the following information.

{
  // `data` is the response that was provided by the server
  data: {},

  // `status` is the HTTP status code from the server response
  status: 200,

  // `statusText` is the HTTP status message from the server response
  statusText: 'OK',

  // `headers` the HTTP headers that the server responded with
  // All header names are lower cased and can be accessed using the bracket notation.
  // Example: `response.headers['content-type']`
  headers: {},

  // `config` is the config that was provided to `axios` for the request
  config: {},

  // `request` is the request that generated this response
  // It is the last ClientRequest instance in node.js (in redirects)
  // and an XMLHttpRequest instance in the browser
  request: {}
}

When using then, you will receive the response as follows:

axios.get('/user/12345')
  .then(function (response) {
    console.log(response.data);
    console.log(response.status);
    console.log(response.statusText);
    console.log(response.headers);
    console.log(response.config);
  });

When using catch, or passing a rejection callback as second parameter of then, the response will be available through the error object as explained in the Handling Errors section.

Config Defaults

You can specify config defaults that will be applied to every request.

Global axios defaults

axios.defaults.baseURL = 'https://api.example.com';

// Important: If axios is used with multiple domains, the AUTH_TOKEN will be sent to all of them.
// See below for an example using Custom instance defaults instead.
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;

axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

Custom instance defaults

// Set config defaults when creating the instance
const instance = axios.create({
  baseURL: 'https://api.example.com'
});

// Alter defaults after instance has been created
instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;

Config order of precedence

Config will be merged with an order of precedence. The order is library defaults found in lib/defaults.js, then defaults property of the instance, and finally config argument for the request. The latter will take precedence over the former. Here's an example.

// Create an instance using the config defaults provided by the library
// At this point the timeout config value is `0` as is the default for the library
const instance = axios.create();

// Override timeout default for the library
// Now all requests using this instance will wait 2.5 seconds before timing out
instance.defaults.timeout = 2500;

// Override timeout for this request as it's known to take a long time
instance.get('/longRequest', {
  timeout: 5000
});

Interceptors

You can intercept requests or responses before they are handled by then or catch.

// Add a request interceptor
axios.interceptors.request.use(function (config) {
    // Do something before request is sent
    return config;
  }, function (error) {
    // Do something with request error
    return Promise.reject(error);
  });

// Add a response interceptor
axios.interceptors.response.use(function (response) {
    // Any status code that lie within the range of 2xx cause this function to trigger
    // Do something with response data
    return response;
  }, function (error) {
    // Any status codes that falls outside the range of 2xx cause this function to trigger
    // Do something with response error
    return Promise.reject(error);
  });

If you need to remove an interceptor later you can.

const myInterceptor = axios.interceptors.request.use(function () {/*...*/});
axios.interceptors.request.eject(myInterceptor);

You can add interceptors to a custom instance of axios.

const instance = axios.create();
instance.interceptors.request.use(function () {/*...*/});

When you add request interceptors, they are presumed to be asynchronous by default. This can cause a delay in the execution of your axios request when the main thread is blocked (a promise is created under the hood for the interceptor and your request gets put on the bottom of the call stack). If your request interceptors are synchronous you can add a flag to the options object that will tell axios to run the code synchronously and avoid any delays in request execution.

axios.interceptors.request.use(function (config) {
  config.headers.test = 'I am only a header!';
  return config;
}, null, { synchronous: true });

If you want to execute a particular interceptor based on a runtime check, you can add a runWhen function to the options object. The interceptor will not be executed if and only if the return of runWhen is false. The function will be called with the config object (don't forget that you can bind your own arguments to it as well.) This can be handy when you have an asynchronous request interceptor that only needs to run at certain times.

function onGetCall(config) {
  return config.method === 'get';
}
axios.interceptors.request.use(function (config) {
  config.headers.test = 'special get headers';
  return config;
}, null, { runWhen: onGetCall });

Handling Errors

axios.get('/user/12345')
  .catch(function (error) {
    if (error.response) {
      // The request was made and the server responded with a status code
      // that falls out of the range of 2xx
      console.log(error.response.data);
      console.log(error.response.status);
      console.log(error.response.headers);
    } else if (error.request) {
      // The request was made but no response was received
      // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
      // http.ClientRequest in node.js
      console.log(error.request);
    } else {
      // Something happened in setting up the request that triggered an Error
      console.log('Error', error.message);
    }
    console.log(error.config);
  });

Using the validateStatus config option, you can define HTTP code(s) that should throw an error.

axios.get('/user/12345', {
  validateStatus: function (status) {
    return status < 500; // Resolve only if the status code is less than 500
  }
})

Using toJSON you get an object with more information about the HTTP error.

axios.get('/user/12345')
  .catch(function (error) {
    console.log(error.toJSON());
  });

Cancellation

You can cancel a request using a cancel token.

The axios cancel token API is based on the withdrawn cancelable promises proposal.

You can create a cancel token using the CancelToken.source factory as shown below:

const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios.get('/user/12345', {
  cancelToken: source.token
}).catch(function (thrown) {
  if (axios.isCancel(thrown)) {
    console.log('Request canceled', thrown.message);
  } else {
    // handle error
  }
});

axios.post('/user/12345', {
  name: 'new name'
}, {
  cancelToken: source.token
})

// cancel the request (the message parameter is optional)
source.cancel('Operation canceled by the user.');

You can also create a cancel token by passing an executor function to the CancelToken constructor:

const CancelToken = axios.CancelToken;
let cancel;

axios.get('/user/12345', {
  cancelToken: new CancelToken(function executor(c) {
    // An executor function receives a cancel function as a parameter
    cancel = c;
  })
});

// cancel the request
cancel();

Note: you can cancel several requests with the same cancel token.

Using application/x-www-form-urlencoded format

By default, axios serializes JavaScript objects to JSON. To send data in the application/x-www-form-urlencoded format instead, you can use one of the following options.

Browser

In a browser, you can use the URLSearchParams API as follows:

const params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);

Note that URLSearchParams is not supported by all browsers (see caniuse.com), but there is a polyfill available (make sure to polyfill the global environment).

Alternatively, you can encode data using the qs library:

const qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 }));

Or in another way (ES6),

import qs from 'qs';
const data = { 'bar': 123 };
const options = {
  method: 'POST',
  headers: { 'content-type': 'application/x-www-form-urlencoded' },
  data: qs.stringify(data),
  url,
};
axios(options);

Node.js

Query string

In node.js, you can use the querystring module as follows:

const querystring = require('querystring');
axios.post('http://something.com/', querystring.stringify({ foo: 'bar' }));

or 'URLSearchParams' from 'url module' as follows:

const url = require('url');
const params = new url.URLSearchParams({ foo: 'bar' });
axios.post('http://something.com/', params.toString());

You can also use the qs library.

NOTE

The qs library is preferable if you need to stringify nested objects, as the querystring method has known issues with that use case (https://github.com/nodejs/node-v0.x-archive/issues/1665).

Form data

In node.js, you can use the form-data library as follows:

const FormData = require('form-data');
 
const form = new FormData();
form.append('my_field', 'my value');
form.append('my_buffer', new Buffer(10));
form.append('my_file', fs.createReadStream('/foo/bar.jpg'));

axios.post('https://example.com', form, { headers: form.getHeaders() })

Alternatively, use an interceptor:

axios.interceptors.request.use(config => {
  if (config.data instanceof FormData) {
    Object.assign(config.headers, config.data.getHeaders());
  }
  return config;
});

Semver

Until axios reaches a 1.0 release, breaking changes will be released with a new minor version. For example 0.5.1, and 0.5.4 will have the same API, but 0.6.0 will have breaking changes.

Promises

axios depends on a native ES6 Promise implementation to be supported. If your environment doesn't support ES6 Promises, you can polyfill.

TypeScript

axios includes TypeScript definitions.

import axios from 'axios';
axios.get('/user?ID=12345');

Online one-click setup

You can use Gitpod an online IDE(which is free for Open Source) for contributing or running the examples online.

Open in Gitpod

Resources

Credits

axios is heavily inspired by the $http service provided in Angular. Ultimately axios is an effort to provide a standalone $http-like service for use outside of Angular.

License

MIT

Comments
  • Content-Type application/x-www-form-urlencoded

    Content-Type application/x-www-form-urlencoded

    Try to send request with content type application/x-www-form-urlencoded

    var data = Querystring.stringify({ 
                    "grant_type": "password",
                    "username": login,
                    "password": password
                });
    axios.post(Urls.login, data);
    

    but there is no such header in request.

    I tried to use code:

      var data = Querystring.stringify({ 
                    "grant_type": "password",
                    "username": login,
                    "password": password
                });
            return axios({
                method: 'post',
                url: Urls.login,
                data: data,
                headers: {
                    'Content-type': 'application/x-www-form-urlencoded'
                }
            });
    

    same problem

    jquery code works fine:

    $.ajax({
                url: Urls.login,
                data: data,
                type: "POST",
                headers: {
                    'Content-type': 'application/x-www-form-urlencoded'
                }
            });
    

    How can I use axios to send request with this header?

    opened by alborozd 220
  • Getting 'Cross-Origin Request Blocked' on a GET request

    Getting 'Cross-Origin Request Blocked' on a GET request

    Summary

    I'm making a GET request to 4chan's API for retrieving threads from a board. This is my code:

    const board = this.props.routeParams.tag;
    var config = {
        headers: {'Access-Control-Allow-Origin': '*'}
    };
    axios.get('https://a.4cdn.org/' + board + '/threads.json', config)
        .then(function (response) {
            console.log(response.data);
    });
    

    I receive the following warning:

    Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://a.4cdn.org/a/threads.json. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). As seen above, I have added the relevant header, but it does not solve the issue. I made the same request from my terminal using cURL and it worked fine.

    Context

    • axios version: e.g.: v0.16.0
    • Environment: e.g.: node v6.9.4, Firefox 51.0.1, Ubuntu 14.04
    opened by adl1995 143
  • Can't get a .post with 'Content-Type': 'multipart/form-data' to work

    Can't get a .post with 'Content-Type': 'multipart/form-data' to work

    I've spent a few hours today trying to get a post request to work with a few parameters and a file that I need to upload.

    I was able to make it work with pure javascript and XMLHttpRequest but it doesn't work with Axios. What am I doing wrong?

    Here's the code that works using XMLHttpRequest:

    let data = new FormData();
    
    data.append('action', 'ADD');
    data.append('param', 0);
    data.append('secondParam', 0);
    data.append('file', new Blob([payload], { type: 'text/csv' }));
    
    // this works
    let request = new XMLHttpRequest();
    request.open('POST', url);
    request.send(data);
    

    What would be the 'Axios' version of that?

    Here's one of my tries (the simple one):

    // this won't work
    const config = { headers: { 'Content-Type': 'multipart/form-data' } };
        axios.post(url, data, config)
        .then(response => console.log(response))
        .catch(errors => console.log(errors));
    

    Thank you! And thanks for your great work with Axios!

    opened by rafaelbiten 99
  • [Community Contest] A logo for Axios

    [Community Contest] A logo for Axios

    Axios has grown to become a popular library with over 3 million weekly downloads on npm. I think it's time axios has its own logo, just like many other major libraries out there. I've designed a concept for the logo, and I hope you guys like it.

    Page 1 Page 2 Page 3

    The logo is based on the concept of request and response. The first one is a square icon/profile picture. The second and third are full logos. These images are not full size, so if you do like them and plan to use them, I can send you the full sized files.

    Edit: Should we count 👍 reactions to this parent comment as votes for this logo submission, or just people in favor of a new logo in general? I can make a a second comment for votes for this submission, or we can do a proper poll with strawpoll later when people are done submitting their ideas.

    feature 
    opened by richiksc 97
  • Axios catch error returns javascript error not server response

    Axios catch error returns javascript error not server response

    Im trying to catch validation errors from the server.

    Code:

    axios.post('/formulas/create', {
           name: "",
           parts: ""
    })
    .then( 
    	(response) => { console.log(response) },
    	(error) => { console.log(error) }
    );
    

    Console log output

    Error: Request failed with status code 422
        at createError (app.js:6765)
        at settle (app.js:29489)
        at XMLHttpRequest.handleLoad (app.js:6600)
    

    Network tab output {"name":["The name field is required."],"parts":["The parts field is required."]}

    I should be seeing an object that contains JSON form validation as that is the response in my network tab, i seem to get the JS catch output?

    Also tried the following:

    axios.post('/formulas/create', {
    	name: "",
    	parts: ""
    })
    .then(response => { 
    	console.log(response)
    })
    .catch(error => {
        console.log(error)
    });
    

    Same result

    More people seem to have the same problem using the same enviroment as me here. https://laracasts.com/discuss/channels/vue/issues-with-axios-catch-method

    • Axios version: ^0.16.2
    • VueJS 2.3.4
    • Vue-template-compiler 2.3.4
    • Laravel-mix
    • Environment: node v6.4.0, chrome 58, Mac OSX 10.12.4
    opened by jiimmeh 87
  • Request params are not getting merged with instance params

    Request params are not getting merged with instance params

    Describe the bug

    Specific request params do not get merged with the instance default params.

    To Reproduce

    const instance = axios.create({
        baseURL: "http://www.example.com",
        params: {
          q: "question",
        }
      });
    
    instance.get("/page", 
      { 
        params: { 
          page: 2 
        }
      }
    )
    

    What happens is that the request param object overrides the instance default param object. The instance no longer has a query param of q.

    Expected behavior

    According to the docs, all configuration options are merged. https://github.com/axios/axios#instance-methods

    I expected request to contain both q and page params. This is also how it was working in version 0.18.0, which is how I noticed.

    Environment:

    • Axios Version: 0.19.0
    • OS: 10.14.5 (18F132)
    • Browser: Node Express, and Chrome
    • Browser: Node 10.15.0, Chrome Version 74.0.3729.169 (Official Build) (64-bit)
    opened by zackseuberling 84
  • TypeError: axios.get is not a function (v1.1.0)

    TypeError: axios.get is not a function (v1.1.0)

    Describe the bug

    The new version of axios (v1.1.0) is throwing an error for axios.get: TypeError: axios.get is not a function.

    Note: This issue was not present in v1.0.0

    To Reproduce

    Include axio v1.1.0 via a <script> tag, and then reference it directly via axios.get()

    <script src="https://unpkg.com/[email protected]/dist/axios.min.js"></script>
    <script>
        axios.get(...)
    </script>
    

    Expected behavior

    axios.get should be a valid function.

    Environment

    • Axios Version 1.1.0
    opened by addisonhardy 76
  • Don't send default header

    Don't send default header

    If a header has been set as a default, there does not appear to be any way to skip it on an individual request. Setting null or undefined doesn't do anything.

    opened by kyeotic 71
  • cannot get cross-site POST to work

    cannot get cross-site POST to work

    Hello,

    Thanks for the great work. Although that were some releases targeting cross-site requests, I still can't get it to work. I dug through the previous posts and tried adding:

    • crossDomain: true
    • xDomain: true *xDomainRequest: true

    to the config. And none of them worked. (If this feature is actually available, updating the readme would help.)

    Please advise ASAP. Thank you.

    opened by j-planet 70
  • Set a code/status for

    Set a code/status for "Network Error"

    I'm trying to detect when my server is down so that I can display an appropriate error message to the user.

    In this case, axios network requests throw an error which is different from all other axios errors, as discussed here: https://github.com/mzabriskie/axios/issues/204

    In my code, it seems the only way to detect this error is to check err.message: if (err.message === "Network Error"){/*tell user the server is down*/}

    This bothers me because string comparisons are a little risky; perhaps some day this message will be translated, and my code will fail.

    It would be great if err.status or err.code (or err.???) were set to some documented value that we can check for in our code.

    Is there any other way to detect this scenario that I'm missing? Thanks all!

    opened by jonathan-stone 69
  • React native IOS Network Error

    React native IOS Network Error

    Describe the bug

    While making any post request using Axios package. I am getting a Network error. While the same API seems to be working perfectly fine with Android devices. It is not an issue with the API.

    To Reproduce

    Axios post request throws a network error message. If I make the call again inside the catch block then it works fine.

    axios
          .post(
            base_url + 'generatePaymentIntent',
            {
              // unit_id: 1,
              token: obj,
              order_type: 'ORD',
              order_data: {
                order_type: order_type,
                apt_id: apt_id,
              },
            },
            Loginheader,
          )
            .then(item => {
            this.setState({
              loading: false,
            });
            console.log('--------generate intent----------');
              console.log(item);
            if (item.data.code === 200) {
              const {price} = item.data.data.order_data;
              
    
              this.displayPaymentModal(
                'Confirm Payment',
                `Final Price: $${price}`,
                this.props.navigation,
                item.data.code,
                'Make Payment',
                item.data.data,
              );
            }
          })
          .catch(e => {
            this.setState({
              loading: false,
            });
            console.log('--------catch generate intent----------');
            // console.log(e.response);
            // const {message, code} = e.response;
            // this.retryPopup(
            //   `Error getting payment Intent`,
            //   message,
            //   '',
            //   code,
            //   'onetime',
            // );
            console.log(e.response);
    
            console.log(JSON.stringify(e));
    
            if (e.message === 'Network Error') {
              // this.makeOneTimePayment(order_type, apt_id);
              this.retryPopup(
                  `Error getting payment Intent`,
                  'RETRY',
                  '',
                  '400',
                  'onetime',
                );
            }
          });
    

    Expected behavior

    It shouldn't through network error. What should be done to fix this behavior specifically for iOS devices/simulators.

    Environment

    • Axios Version [e.g. 0.19.2]
    • Additional Library Versions [e.g. React 16.9.0, React Native 0.62.2]

    Additional context/Screenshots

    N/A

    opened by swapnilshah09 65
  • chore(deps): bump json5 from 1.0.1 to 1.0.2

    chore(deps): bump json5 from 1.0.1 to 1.0.2

    Bumps json5 from 1.0.1 to 1.0.2.

    Release notes

    Sourced from json5's releases.

    v1.0.2

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295). This has been backported to v1. (#298)
    Changelog

    Sourced from json5's changelog.

    Unreleased [code, diff]

    v2.2.3 [code, diff]

    v2.2.2 [code, diff]

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1 [code, diff]

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)

    v2.2.0 [code, diff]

    • New: Accurate and documented TypeScript declarations are now included. There is no need to install @types/json5. (#236, #244)

    v2.1.3 [code, diff]

    • Fix: An out of memory bug when parsing numbers has been fixed. (#228, #229)

    v2.1.2 [code, diff]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies javascript 
    opened by dependabot[bot] 0
  • axios v1.2.2 AxiosInstance import error with Vite

    axios v1.2.2 AxiosInstance import error with Vite

    Describe the bug

    In Vue3 / TypeScript project, import { AxiosError } from 'axios';

    Build shows warning: Non-existent export 'AxiosError' is imported from node_modules/axios/index.js

    Although there is only a build warning, any component (Vue) or TypeScript (ts) that includes this import fails to work. Browser console (Dev-Tools) shows:

    Uncaught SyntaxError: The requested module '/node_modules/.vite/deps/axios.js?v=bd690d6d' does not provide an export named 'AxiosInstance'

    To Reproduce

    No response

    Code snippet

    No response

    Expected behavior

    Should not break

    Axios Version

    1.2.2

    Adapter Version

    No response

    Browser

    Chrome

    Browser Version

    No response

    Node.js Version

    v18.9.0

    OS

    macOs 12.6.2

    Additional Library Versions

    Vue3 / TypeScript
    

    Additional context/Screenshots

    No response

    opened by nicolasassi 0
  • `config.transport` is not documented and its type is not defined

    `config.transport` is not documented and its type is not defined

    Is your feature request related to a problem? Please describe.

    While config.transport option is implemented (ref), it's not documented in README. The only reference to it is in some comments to #1175 (e.g. https://github.com/axios/axios/issues/1175#issuecomment-1030817133).

    In addition, AxiosRequestConfig type definition (ref) doesn't include that of transport.

    Is config.transport intentionally undocumented?

    Describe the solution you'd like

    If it's undocumented on purpose, I will do nothing. Otherwise, I'm glad to submit a PR.

    Describe alternatives you've considered

    N/A

    Additional context/Screenshots

    N/A
    
    feature 
    opened by NozomuIkuta 0
  • Customizable config merging

    Customizable config merging

    Is your feature request related to a problem? Please describe.

    For more advanced use cases it would be very helpful to be able to customize how config merging happens. The default mergeConfig function just uses the equivalent of Object.assign for unknown keys in the config, which makes some things more difficult than they should be.

    In the case where I just encountered this I'm trying to include an array of values that should be merged, but for an array the new value just overwrites the old one instead of merging them.

    Describe the solution you'd like

    The mergeConfig function is already exposed so that you can use it externally. Making it possible to replace that and have Axios use the replaced version is one option. An even easier option would be to export the mergeMap that it uses to decide how to merge config keys so that you could add custom properties to that to influence how they get merged.

    Describe alternatives you've considered

    Currently what I'm doing to work around this is subclassing Axios (with a pretty significant amount of copy-pasted code) just to control how the config gets merged..

    Additional context/Screenshots

    I'm willing to put together a PR, I just wanted to bring it up first in case any of the maintainers have strong feelings about which approach to take (or if there is some way to do this already that I've missed).

    feature 
    opened by jasonk 0
  • TypeScript error /axios/index.d.ts(6,18): ']' expected.  TS1005

    TypeScript error /axios/index.d.ts(6,18): ']' expected. TS1005

    Describe the bug

    I got an error when try to use axios.get(url):

    TypeScript error in /.../react-app/node_modules/axios/index.d.ts(6,18):
    ']' expected.  TS1005
    
        4 | 
        5 | type MethodsHeaders = {
      > 6 |   [Key in Method as Lowercase<Key>]: AxiosHeaders;
          |                  ^
        7 | };
        8 | 
        9 | interface CommonHeaders {
    

    To Reproduce

    axios.get(url)

    Code snippet

    No response

    Expected behavior

    No response

    Axios Version

    "axios": "^1.2.2",

    Adapter Version

    No response

    Browser

    Chrome

    Browser Version

    No response

    Node.js Version

    v18.9.0 and v18.9.0

    OS

    Linux

    Additional Library Versions

    No response

    Additional context/Screenshots

    image

    image image

    opened by flakesrc 0
Releases(1.2.2)
  • 1.2.2(Dec 29, 2022)

    [1.2.2] - 2022-12-29

    Fixed

    • fix(ci): fix release script inputs #5392
    • fix(ci): prerelease scipts #5377
    • fix(ci): release scripts #5376
    • fix(ci): typescript tests #5375
    • fix: Brotli decompression #5353
    • fix: add missing HttpStatusCode #5345

    Chores

    • chore(ci): set conventional-changelog header config #5406
    • chore(ci): fix automatic contributors resolving #5403
    • chore(ci): improved logging for the contributors list generator #5398
    • chore(ci): fix release action #5397
    • chore(ci): fix version bump script by adding bump argument for target version #5393
    • chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2 #5342
    • chore(ci): GitHub Actions Release script #5384
    • chore(ci): release scripts #5364

    Contributors to this release

    Source code(tar.gz)
    Source code(zip)
  • v1.2.1(Dec 5, 2022)

    [1.2.1] - 2022-12-05

    Changed

    • feat(exports): export mergeConfig #5151

    Fixed

    • fix(CancelledError): include config #4922
    • fix(general): removing multiple/trailing/leading whitespace #5022
    • fix(headers): decompression for responses without Content-Length header #5306
    • fix(webWorker): exception to sending form data in web worker #5139

    Refactors

    • refactor(types): AxiosProgressEvent.event type to any #5308
    • refactor(types): add missing types for static AxiosError.from method #4956

    Chores

    • chore(docs): remove README link to non-existent upgrade guide #5307
    • chore(docs): typo in issue template name #5159

    Contributors to this release

    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Nov 22, 2022)

    [1.2.0] - 2022-11-10

    Changed

    • changed: refactored module exports #5162
    • change: re-added support for loading Axios with require('axios').default #5225

    Fixed

    • fix: improve AxiosHeaders class #5224
    • fix: TypeScript type definitions for commonjs #5196
    • fix: type definition of use method on AxiosInterceptorManager to match the the README #5071
    • fix: __dirname is not defined in the sandbox #5269
    • fix: AxiosError.toJSON method to avoid circular references #5247
    • fix: Z_BUF_ERROR when content-encoding is set but the response body is empty #5250

    Refactors

    • refactor: allowing adapters to be loaded by name #5277

    Chores

    • chore: force CI restart #5243
    • chore: update ECOSYSTEM.md #5077
    • chore: update get/index.html #5116
    • chore: update Sandbox UI/UX #5205
    • chore:(actions): remove git credentials after checkout #5235
    • chore(actions): bump actions/dependency-review-action from 2 to 3 #5266
    • chore(packages): bump loader-utils from 1.4.1 to 1.4.2 #5295
    • chore(packages): bump engine.io from 6.2.0 to 6.2.1 #5294
    • chore(packages): bump socket.io-parser from 4.0.4 to 4.0.5 #5241
    • chore(packages): bump loader-utils from 1.4.0 to 1.4.1 #5245
    • chore(docs): update Resources links in README #5119
    • chore(docs): update the link for JSON url #5265
    • chore(docs): fix broken links #5218
    • chore(docs): update and rename UPGRADE_GUIDE.md to MIGRATION_GUIDE.md #5170
    • chore(docs): typo fix line #856 and #920 #5194
    • chore(docs): typo fix #800 #5193
    • chore(docs): fix typos #5184
    • chore(docs): fix punctuation in README.md #5197
    • chore(docs): update readme in the Handling Errors section - issue reference #5260 #5261
    • chore: remove \b from filename #5207
    • chore(docs): update CHANGELOG.md #5137
    • chore: add sideEffects false to package.json #5025

    Contributors to this release

    Source code(tar.gz)
    Source code(zip)
  • 1.2.0-alpha.1(Nov 10, 2022)

    [1.2.0-alpha.1] - 2022-11-10

    Changed

    • changed: refactored module exports #5162
    • change: re-added support for loading Axios with require('axios').default #5225

    Fixed

    • fix: improve AxiosHeaders class #5224
    • fix: TypeScript type definitions for commonjs #5196
    • fix: type definition of use method on AxiosInterceptorManager to match the the README #5071
    • fix: __dirname is not defined in the sandbox #5269
    • fix: AxiosError.toJSON method to avoid circular references #5247
    • fix: Z_BUF_ERROR when content-encoding is set but the response body is empty #5250

    Refactors

    • refactor: allowing adapters to be loaded by name #5277

    Chores

    • chore: force CI restart #5243
    • chore: update ECOSYSTEM.md #5077
    • chore: update get/index.html #5116
    • chore: update Sandbox UI/UX #5205
    • chore:(actions): remove git credentials after checkout #5235
    • chore(actions): bump actions/dependency-review-action from 2 to 3 #5266
    • chore(packages): bump loader-utils from 1.4.1 to 1.4.2 #5295
    • chore(packages): bump engine.io from 6.2.0 to 6.2.1 #5294
    • chore(packages): bump socket.io-parser from 4.0.4 to 4.0.5 #5241
    • chore(packages): bump loader-utils from 1.4.0 to 1.4.1 #5245
    • chore(docs): update Resources links in README #5119
    • chore(docs): update the link for JSON URL #5265
    • chore(docs): fix broken links #5218
    • chore(docs): update and rename UPGRADE_GUIDE.md to MIGRATION_GUIDE.md #5170
    • chore(docs): typo fix line #856 and #920 #5194
    • chore(docs): typo fix #800 #5193
    • chore(docs): fix typos #5184
    • chore(docs): fix punctuation in README.md #5197
    • chore(docs): update readme in the Handling Errors section - issue reference #5260 #5261
    • chore: remove \b from filename #5207
    • chore(docs): update CHANGELOG.md #5137
    • chore: add sideEffects false to package.json #5025

    Contributors to this release

    Source code(tar.gz)
    Source code(zip)
  • v1.1.3(Oct 15, 2022)

    Added

    Added custom params serializer support #5113

    Fixed

    Fixed top-level export to keep them in-line with static properties #5109 Stopped including null values to query string. #5108 Restored proxy config backwards compatibility with 0.x #5097 Added back AxiosHeaders in AxiosHeaderValue #5103 Pin CDN install instructions to a specific version #5060 Handling of array values fixed for AxiosHeaders #5085

    Chores

    docs: match badge style, add link to them #5046 chore: fixing comments typo #5054 chore: update issue template #5061 chore: added progress capturing section to the docs; #5084

    Contributors to this release

    Source code(tar.gz)
    Source code(zip)
  • v1.1.2(Oct 7, 2022)

  • v1.1.1(Oct 7, 2022)

  • v1.1.0(Oct 6, 2022)

  • v1.0.0(Oct 4, 2022)

    Added

    • Added stack trace to AxiosError #4624
    • Add AxiosError to AxiosStatic #4654
    • Replaced Rollup as our build runner #4596
    • Added generic TS types for the exposed toFormData helper #4668
    • Added listen callback function #4096
    • Added instructions for installing using PNPM #4207
    • Added generic AxiosAbortSignal TS interface to avoid importing AbortController polyfill #4229
    • Added axios-url-template in ECOSYSTEM.md #4238
    • Added a clear() function to the request and response interceptors object so a user can ensure that all interceptors have been removed from an Axios instance #4248
    • Added react hook plugin #4319
    • Adding HTTP status code for transformResponse #4580
    • Added blob to the list of protocols supported by the browser #4678
    • Resolving proxy from env on redirect #4436
    • Added enhanced toFormData implementation with additional options 4704
    • Adding Canceler parameters config and request #4711
    • Added automatic payload serialization to application/x-www-form-urlencoded #4714
    • Added the ability for webpack users to overwrite built-ins #4715
    • Added string[] to AxiosRequestHeaders type #4322
    • Added the ability for the url-encoded-form serializer to respect the formSerializer config #4721
    • Added isCancel type assert #4293
    • Added data URL support for node.js #4725
    • Adding types for progress event callbacks #4675
    • URL params serializer #4734
    • Added axios.formToJSON method #4735
    • Bower platform add data protocol #4804
    • Use WHATWG URL API instead of url.parse() #4852
    • Add ENUM containing Http Status Codes to typings #4903
    • Improve typing of timeout in index.d.ts #4934

    Changed

    • Updated AxiosError.config to be optional in the type definition #4665
    • Updated README emphasizing the URLSearchParam built-in interface over other solutions #4590
    • Include request and config when creating a CanceledError instance #4659
    • Changed func-names eslint rule to as-needed #4492
    • Replacing deprecated substr() with slice() as substr() is deprecated #4468
    • Updating HTTP links in README.md to use HTTPS #4387
    • Updated to a better trim() polyfill #4072
    • Updated types to allow specifying partial default headers on instance create #4185
    • Expanded isAxiosError types #4344
    • Updated type definition for Axios instance methods #4224
    • Updated eslint config #4722
    • Updated Docs #4742
    • Refactored Axios to use ES2017 #4787

    Deprecated

    • There are multiple deprecations, refactors and fixes provided in this release. Please read through the full release notes to see how this may impact your project and use case.

    Removed

    • Removed incorrect argument for NetworkError constructor #4656
    • Removed Webpack #4596
    • Removed function that transforms arguments to array #4544

    Fixed

    • Fixed grammar in README #4649
    • Fixed code error in README #4599
    • Optimized the code that checks cancellation #4587
    • Fix URL pointing to defaults.js in README #4532
    • Use type alias instead of interface for AxiosPromise #4505
    • Fix some word spelling and lint style in code comments #4500
    • Edited readme with 3 updated browser icons of Chrome, Firefox and Safari #4414
    • Bump follow-redirects from 1.14.9 to 1.15.0 #4673
    • Fixing HTTP tests to avoid hanging when assertions fail #4435
    • Fix TS definition for AxiosRequestTransformer #4201
    • Fix grammatical issues in README #4232
    • Fixing instance.defaults.headers type #4557
    • Fixed race condition on immediate requests cancellation #4261
    • Fixing Z_BUF_ERROR when no content #4701
    • Fixing proxy beforeRedirect regression #4708
    • Fixed AxiosError status code type #4717
    • Fixed AxiosError stack capturing #4718
    • Fixing AxiosRequestHeaders typings #4334
    • Fixed max body length defaults #4731
    • Fixed toFormData Blob issue on node>v17 #4728
    • Bump grunt from 1.5.2 to 1.5.3 #4743
    • Fixing content-type header repeated #4745
    • Fixed timeout error message for HTTP 4738
    • Request ignores false, 0 and empty string as body values #4785
    • Added back missing minified builds #4805
    • Fixed a type error #4815
    • Fixed a regression bug with unsubscribing from cancel token; #4819
    • Remove repeated compression algorithm #4820
    • The error of calling extends to pass parameters #4857
    • SerializerOptions.indexes allows boolean | null | undefined #4862
    • Require interceptors to return values #4874
    • Removed unused imports #4949
    • Allow null indexes on formSerializer and paramsSerializer #4960

    Chores

    • Set permissions for GitHub actions #4765
    • Included githubactions in the dependabot config #4770
    • Included dependency review #4771
    • Update security.md #4784
    • Remove unnecessary spaces #4854
    • Simplify the import path of AxiosError #4875
    • Fix Gitpod dead link #4941
    • Enable syntax highlighting for a code block #4970
    • Using Logo Axios in Readme.md #4993
    • Fix markup for note in README #4825
    • Fix typo and formatting, add colons #4853
    • Fix typo in readme #4942

    Security

    • Update SECURITY.md #4687

    Contributors to this release

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-alpha.1(May 31, 2022)

    Added

    • Added stack trace to AxiosError #4624
    • Add AxiosError to AxiosStatic #4654
    • Replaced Rollup as our build runner #4596
    • Added generic TS types for the exposed toFormData helper #4668
    • Added listen callback function #4096
    • Added instructions for installing using PNPM #4207
    • Added generic AxiosAbortSignal TS interface to avoid importing AbortController polyfill #4229
    • Added axios-url-template in ECOSYSTEM.md #4238
    • Added a clear() function to the request and response interceptors object so a user can ensure that all interceptors have been removed from an axios instance #4248
    • Added react hook plugin #4319
    • Adding HTTP status code for transformResponse #4580
    • Added blob to the list of protocols supported by the browser #4678
    • Resolving proxy from env on redirect #4436
    • Added enhanced toFormData implementation with additional options 4704
    • Adding Canceler parameters config and request #4711
    • Added automatic payload serialization to application/x-www-form-urlencoded #4714
    • Added the ability for webpack users to overwrite built-ins #4715
    • Added string[] to AxiosRequestHeaders type #4322
    • Added the ability for the url-encoded-form serializer to respect the formSerializer config #4721
    • Added isCancel type assert #4293
    • Added data URL support for node.js #4725
    • Adding types for progress event callbacks #4675
    • URL params serializer #4734
    • Added axios.formToJSON method #4735

    Changed

    • Updated AxiosError.config to be optional in the type definition #4665
    • Updated README emphasizing the URLSearchParam built-in interface over other solutions #4590
    • Include request and config when creating a CanceledError instance #4659
    • Changed func-names eslint rule to as-needed #4492
    • Replacing deprecated substr() with slice() as substr() is deprecated #4468
    • Updating HTTP links in README.md to use HTTPS #4387
    • Updated to a better trim() polyfill #4072
    • Updated types to allow specifying partial default headers on instance create #4185
    • Expanded isAxiosError types #4344
    • Updated type definition for axios instance methods #4224
    • Updated eslint config #4722
    • Updated Docs #4742

    Removed

    • Removed incorrect argument for NetworkError constructor #4656
    • Removed Webpack #4596
    • Removed function that transform arguments to array #4544

    Fixed

    • Fixed grammar in README #4649
    • Fixed code error in README #4599
    • Optimized the code that checks cancellation #4587
    • Fix url pointing to defaults.js in README #4532
    • Use type alias instead of interface for AxiosPromise #4505
    • Fix some word spelling and lint style in code comments #4500
    • Edited readme with 3 updated browser icons of Chrome, FireFox and Safari #4414
    • Bump follow-redirects from 1.14.9 to 1.15.0 #4673
    • Fixing http tests to avoid hanging when assertions fail #4435
    • Fix TS definition for AxiosRequestTransformer #4201
    • Fix grammatical issues in README #4232
    • Fixing instance.defaults.headers type #4557
    • Fixed race condition on immediate requests cancellation #4261
    • Fixing Z_BUF_ERROR when no content #4701
    • Fixing proxy beforeRedirect regression #4708
    • Fixed AxiosError status code type #4717
    • Fixed AxiosError stack capturing #4718
    • Fixing AxiosRequestHeaders typings #4334
    • Fixed max body length defaults #4731
    • Fixed toFormData Blob issue on node>v17 #4728
    • Bump grunt from 1.5.2 to 1.5.3 #4743
    • Fixing content-type header repeated #4745
    • Fixed timeout error message for http 4738

    Security

    • Update SECURITY.md #4687

    Contributors to this release

    Source code(tar.gz)
    Source code(zip)
  • v0.27.2(Apr 27, 2022)

  • v0.27.1(Apr 26, 2022)

  • v0.27.0(Apr 25, 2022)

    Breaking changes:

    • New toFormData helper function that allows the implementor to pass an object and allow axios to convert it to FormData (#3757)
    • Removed functionality that removed the the Content-Type request header when passing FormData (#3785)
    • (*) Refactored error handling implementing AxiosError as a constructor, this is a large change to error handling on the whole (#3645)
    • Separated responsibility for FormData instantiation between transformRequest and toFormData (#4470)
    • (*) Improved and fixed multiple issues with FormData support (#4448)

    QOL and DevX improvements:

    • Added a multipart/form-data testing playground allowing contributors to debug changes easily (#4465)

    Fixes and Functionality:

    • Refactored project file structure to avoid circular imports (#4515) & (#4516)
    • Bumped follow-redirects to ^1.14.9 (#4562)

    Internal and Tests:

    • Updated dev dependencies to latest version

    Documentation:

    • Fixing incorrect link in changelog (#4551)

    Notes:

    • (*) Please read these pull requests before updating, these changes are very impactful and far reaching.
    Source code(tar.gz)
    Source code(zip)
  • v0.26.1(Mar 9, 2022)

  • v0.26.0(Feb 13, 2022)

    Fixes and Functionality:

    • Fixed The timeoutErrorMessage property in config not work with Node.js (#3581)
    • Added errors to be displayed when the query parsing process itself fails (#3961)
    • Fix/remove url required (#4426)
    • Update follow-redirects dependency due to Vulnerability (#4462)
    • Bump karma from 6.3.11 to 6.3.14 (#4461)
    • Bump follow-redirects from 1.14.7 to 1.14.8 (#4473)
    Source code(tar.gz)
    Source code(zip)
  • v0.25.0(Jan 18, 2022)

    Breaking changes:

    • Fixing maxBodyLength enforcement (#3786)
    • Don't rely on strict mode behaviour for arguments (#3470)
    • Adding error handling when missing url (#3791)
    • Update isAbsoluteURL.js removing escaping of non-special characters (#3809)
    • Use native Array.isArray() in utils.js (#3836)
    • Adding error handling inside stream end callback (#3967)

    Fixes and Functionality:

    • Added aborted even handler (#3916)
    • Header types expanded allowing boolean and number types (#4144)
    • Fix cancel signature allowing cancel message to be undefined (#3153)
    • Updated type checks to be formulated better (#3342)
    • Avoid unnecessary buffer allocations (#3321)
    • Adding a socket handler to keep TCP connection live when processing long living requests (#3422)
    • Added toFormData helper function (#3757)
    • Adding responseEncoding prop type in AxiosRequestConfig (#3918)

    Internal and Tests:

    • Adding axios-test-instance to ecosystem (#3786)
    • Optimize the logic of isAxiosError (#3546)
    • Add tests and documentation to display how multiple inceptors work (#3564)
    • Updating follow-redirects to version 1.14.7 (#4379)

    Documentation:

    • Fixing changelog to show corrext pull request (#4219)
    • Update upgrade guide for https proxy setting (#3604)

    Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub:

    Source code(tar.gz)
    Source code(zip)
  • v0.24.0(Oct 25, 2021)

  • v0.23.0(Oct 12, 2021)

    Breaking changes:

    • Distinguish request and response data types (#4116)
    • Change never type to unknown (#4142)
    • Fixed TransitionalOptions typings (#4147)

    Fixes and Functionality:

    • Adding globalObject: 'this' to webpack config (#3176)
    • Adding insecureHTTPParser type to AxiosRequestConfig (#4066)
    • Fix missing semicolon in typings (#4115)
    • Fix response headers types (#4136)

    Internal and Tests:

    • Improve timeout error when timeout is browser default (#3209)
    • Fix node version on CI (#4069)
    • Added testing to TypeScript portion of project (#4140)

    Documentation:

    • Rename Angular to AngularJS (#4114)

    Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub:

    Source code(tar.gz)
    Source code(zip)
  • v0.22.0(Oct 1, 2021)

    Fixes and Functionality:

    • Caseless header comparing in HTTP adapter (#2880)
    • Avoid package.json import fixing issues and warnings related to this (#4041), (#4065)
    • Fixed cancelToken leakage and added AbortController support (#3305)
    • Updating CI to run on release branches
    • Bump follow redirects version
    • Fixed default transitional config for custom Axios instance; (#4052)

    Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub:

    Source code(tar.gz)
    Source code(zip)
  • v0.21.4(Sep 6, 2021)

  • 0.21.3(Sep 4, 2021)

    Fixes and Functionality:

    • Fixing response interceptor not being called when request interceptor is attached (#4013)

    Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub:

    Source code(tar.gz)
    Source code(zip)
  • v0.21.2(Sep 4, 2021)

    Fixes and Functionality:

    • Updating axios requests to be delayed by pre-emptive promise creation (#2702)
    • Adding "synchronous" and "runWhen" options to interceptors api (#2702)
    • Updating of transformResponse (#3377)
    • Adding ability to omit User-Agent header (#3703)
    • Adding multiple JSON improvements (#3688, #3763)
    • Fixing quadratic runtime and extra memory usage when setting a maxContentLength (#3738)
    • Adding parseInt to config.timeout (#3781)
    • Adding custom return type support to interceptor (#3783)
    • Adding security fix for ReDoS vulnerability (#3980)

    Internal and Tests:

    • Updating build dev dependancies (#3401)
    • Fixing builds running on Travis CI (#3538)
    • Updating follow rediect version (#3694, #3771)
    • Updating karma sauce launcher to fix failing sauce tests (#3712, #3717)
    • Updating content-type header for application/json to not contain charset field, according do RFC 8259 (#2154)
    • Fixing tests by bumping karma-sauce-launcher version (#3813)
    • Changing testing process from Travis CI to GitHub Actions (#3938)

    Documentation:

    • Updating documentation around the use of AUTH_TOKEN with multiple domain endpoints (#3539)
    • Remove duplication of item in changelog (#3523)
    • Fixing gramatical errors (#2642)
    • Fixing spelling error (#3567)
    • Moving gitpod metion (#2637)
    • Adding new axios documentation website link (#3681, #3707)
    • Updating documentation around dispatching requests (#3772)
    • Adding documentation for the type guard isAxiosError (#3767)
    • Adding explanation of cancel token (#3803)
    • Updating CI status badge (#3953)
    • Fixing errors with JSON documentation (#3936)
    • Fixing README typo under Request Config (#3825)
    • Adding axios-multi-api to the ecosystem file (#3817)
    • Adding SECURITY.md to properly disclose security vulnerabilities (#3981)

    Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub:

    Source code(tar.gz)
    Source code(zip)
  • v0.21.1(Jan 4, 2021)

    Fixes and Functionality:

    • Hotfix: Prevent SSRF (#3410)
    • Protocol not parsed when setting proxy config from env vars (#3070)
    • Updating axios in types to be lower case (#2797)
    • Adding a type guard for AxiosError (#2949)

    Internal and Tests:

    • Remove the skipping of the socket http test (#3364)
    • Use different socket for Win32 test (#3375)

    Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub:

    Source code(tar.gz)
    Source code(zip)
  • v0.21.0(Oct 23, 2020)

    Fixes and Functionality:

    • Fixing requestHeaders.Authorization (#3287)
    • Fixing node types (#3237)
    • Fixing axios.delete ignores config.data (#3282)
    • Revert "Fixing overwrite Blob/File type as Content-Type in browser. (#1773)" (#3289)
    • Fixing an issue that type 'null' and 'undefined' is not assignable to validateStatus when typescript strict option is enabled (#3200)

    Internal and Tests:

    • Lock travis to not use node v15 (#3361)

    Documentation:

    • Fixing simple typo, existant -> existent (#3252)
    • Fixing typos (#3309)

    Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub:

    Source code(tar.gz)
    Source code(zip)
  • v0.20.0(Aug 21, 2020)

  • v0.20.0-0(Jul 15, 2020)

    Fixes and Functionality:

    • Fixing response with utf-8 BOM can not parse to json (#2419)
      • fix: remove byte order marker (UTF-8 BOM) when transform response
      • fix: remove BOM only utf-8
      • test: utf-8 BOM
      • fix: incorrect param name
    • Refactor mergeConfig without utils.deepMerge (#2844)
      • Adding failing test
      • Fixing #2587 default custom config persisting
      • Adding Concat keys and filter duplicates
      • Fixed value from CPE
      • update for review feedbacks
      • no deepMerge
      • only merge between plain objects
      • fix rename
      • always merge config by mergeConfig
      • extract function mergeDeepProperties
      • refactor mergeConfig with all keys, and add special logic for validateStatus
      • add test for resetting headers
      • add lots of tests and fix a bug
      • should not inherit data
      • use simple toString
    • Fixing overwrite Blob/File type as Content-Type in browser. (#1773)
    • Fixing an issue that type 'null' is not assignable to validateStatus (#2773)
    • Fixing special char encoding (#1671)
      • removing @ character from replacement list since it is a reserved character
      • Updating buildURL test to not include the @ character
      • Removing console logs
    • Fixing password encoding with special characters in basic authentication (#1492)
      • Fixing password encoding with special characters in basic authentication
      • Adding test to check if password with non-Latin1 characters pass
    • Fixing 'Network Error' in react native android (#1487) There is a bug in react native Android platform when using get method. It will trigger a 'Network Error' when passing the requestData which is an empty string to request.send function. So if the requestData is an empty string we can set it to null as well to fix the bug.
    • Fixing Cookie Helper with Asyc Components (#1105) (#1107)
    • Fixing 'progressEvent' type (#2851)
      • Fix 'progressEvent' type
      • Update axios.ts
    • Fixing getting local files (file://) failed (#2470)
      • fix issue #2416, #2396
      • fix Eslint warn
      • Modify judgment conditions
      • add unit test
      • update unit test
      • update unit test
    • Allow PURGE method in typings (#2191)
    • Adding option to disable automatic decompression (#2661)
      • Adding ability to disable auto decompression
      • Updating decompress documentation in README
      • Fixing test\unit\adapters\http.js lint errors
      • Adding test for disabling auto decompression
      • Removing changes that fixed lint errors in tests
      • Removing formating change to unit test
    • Add independent maxBodyLength option (#2781)
      • Add independent option to set the maximum size of the request body
      • Remove maxBodyLength check
      • Update README
      • Assert for error code and message
    • Adding responseEncoding to mergeConfig (#1745)
    • Compatible with follow-redirect aborts the request (#2689)
      • Compatible with follow-redirect aborts the request
      • Use the error code
    • Fix merging of params (#2656)
      • Name function to avoid ESLint func-names warning
      • Switch params config to merge list and update tests
      • Restore testing of both false and null
      • Restore test cases for keys without defaults
      • Include test for non-object values that aren't false-y.
    • Revert finally as then (#2683)

    Internal and Tests:

    • Fix stale bot config (#3049)
      • fix stale bot config
      • fix multiple lines
    • Add days and change name to work (#3035)
    • Update close-issues.yml (#3031)
      • Update close-issues.yml Update close message to read better 😄
      • Fix use of quotations Use single quotes as per other .yml files
      • Remove user name form message
    • Add GitHub actions to close stale issues/prs (#3029)
      • prepare stale actions
      • update messages
      • Add exempt labels and lighten up comments
    • Add GitHub actions to close invalid issues (#3022)
      • add close actions
      • fix with checkout
      • update issue templates
      • add reminder
      • update close message
    • Add test with Node.js 12 (#2860)
      • test with Node.js 12
      • test with latest
    • Adding console log on sandbox server startup (#2210)
      • Adding console log on sandbox server startup
      • Update server.js Add server error handeling
      • Update server.js Better error message, remove retry.
    • Adding tests for method options type definitions (#1996) Update tests.
    • Add test for redirecting with too large response (#2695)
    • Fixing unit test failure in Windows OS (#2601)
    • Fixing issue for HEAD method and gziped repsonse (#2666)
    • Fix tests in browsers (#2748)
    • chore: add jsdelivr and unpkg support (#2443)

    Documentation:

    • Adding support for URLSearchParams in node (#1900)
      • Adding support for URLSearchParams in node
      • Remove un-needed code
      • Update utils.js
      • Make changes as suggested
    • Adding table of content (preview) (#3050)
      • add toc (preview)
      • remove toc in toc Signed-off-by: Moni [email protected]
      • fix sublinks
      • fix indentation
      • remove redundant table links
      • update caps and indent
      • remove axios
    • Replace 'blacklist' with 'blocklist' (#3006)
    • docs(): Detailed config options environment. (#2088)
      • docs(): Detailed config options environment.
      • Update README.md
    • Include axios-data-unpacker in ECOSYSTEM.md (#2080)
    • Allow opening examples in Gitpod (#1958)
    • Remove axios.all() and axios.spread() from Readme.md (#2727)
      • remove axios.all(), axios.spread()
      • replace example
      • axios.all() -> Promise.all()
      • axios.spread(function (acct, perms)) -> function (acct, perms)
      • add deprecated mark
    • Update README.md (#2887) Small change to the data attribute doc of the config. A request body can also be set for DELETE methods but this wasn't mentioned in the documentation (it only mentioned POST, PUT and PATCH). Took my some 10-20 minutes until I realized that I don't need to manipulate the request body with transformRequest in the case of DELETE.
    • Include swagger-taxos-codegen in ECOSYSTEM.md (#2162)
    • Add CDNJS version badge in README.md (#878) This badge will show the version on CDNJS!
    • Documentation update to clear up ambiguity in code examples (#2928)
      • Made a adjustment to the documenation to clear up any ambiguity around the use of "fs". This should help clear up that the code examples with "fs" cannot be used on the client side.
    • Update README.md about validateStatus (#2912) Rewrote the comment from "Reject only if the status code is greater than or equal to 500" to "Resolve only if the status code is less than 500"
    • Updating documentation for usage form-data (#2805) Closes #2049
    • Fixing CHANGELOG.md issue link (#2784)
    • Include axios-hooks in ECOSYSTEM.md (#2003)
    • Added Response header access instructions (#1901)
      • Added Response header access instructions
      • Added note about using bracket notation
    • Add onUploadProgress and onDownloadProgress are browser only (#2763) Saw in #928 and #1966 that onUploadProgress and onDownloadProgress only work in the browser and was missing that from the README.
    • Update ' sign to ` in proxy spec (#2778)
    • Adding jsDelivr link in README (#1110)
      • Adding jsDelivr link
      • Add SRI
      • Remove SRI

    Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub:

    Source code(tar.gz)
    Source code(zip)
  • v0.19.2(Jan 22, 2020)

  • 0.19.1(Jan 7, 2020)

    Fixes and Functionality:

    • Fixing invalid agent issue (#1904)
    • Fix ignore set withCredentials false (#2582)
    • Delete useless default to hash (#2458)
    • Fix HTTP/HTTPs agents passing to follow-redirect (#1904)
    • Fix ignore set withCredentials false (#2582)
    • Fix CI build failure (#2570)
    • Remove dependency on is-buffer from package.json (#1816)
    • Adding options typings (#2341)
    • Adding Typescript HTTP method definition for LINK and UNLINK. (#2444)
    • Update dist with newest changes, fixes Custom Attributes issue
    • Change syntax to see if build passes (#2488)
    • Update Webpack + deps, remove now unnecessary polyfills (#2410)
    • Fix to prevent XSS, throw an error when the URL contains a JS script (#2464)
    • Add custom timeout error copy in config (#2275)
    • Add error toJSON example (#2466)
    • Fixing Vulnerability A Fortify Scan finds a critical Cross-Site Scrip… (#2451)
    • Fixing subdomain handling on no_proxy (#2442)
    • Make redirection from HTTP to HTTPS work ([#2426](https://github.com/axios/axios/pull/2426] and (#2547)
    • Add toJSON property to AxiosError type (#2427)
    • Fixing socket hang up error on node side for slow response. (#1752)
    • Alternative syntax to send data into the body (#2317)
    • Fixing custom config options (#2207)
    • Fixing set config.method after mergeConfig for Axios.prototype.request (#2383)
    • Axios create url bug (#2290)
    • Do not modify config.url when using a relative baseURL (resolves #1628) (#2391)
    • Add typescript HTTP method definition for LINK and UNLINK (#2444)

    Internal:

    • Revert "Update Webpack + deps, remove now unnecessary polyfills" (#2479)
    • Order of if/else blocks is causing unit tests mocking XHR. (#2201)
    • Add license badge (#2446)
    • Fix travis CI build #2386
    • Fix cancellation error on build master. #2290 #2207 (#2407)

    Documentation:

    • Fixing typo in CHANGELOG.md: s/Functionallity/Functionality (#2639)
    • Fix badge, use master branch (#2538)
    • Fix typo in changelog #2193
    • Document fix (#2514)
    • Update docs with no_proxy change, issue #2484 (#2513)
    • Fixing missing words in docs template (#2259)
    • 🐛Fix request finally documentation in README (#2189)
    • updating spelling and adding link to docs (#2212)
    • docs: minor tweak (#2404)
    • Update response interceptor docs (#2399)
    • Update README.md (#2504)
    • Fix word 'sintaxe' to 'syntax' in README.md (#2432)
    • upadating README: notes on CommonJS autocomplete (#2256)
    • Fix grammar in README.md (#2271)
    • Doc fixes, minor examples cleanup (#2198)
    Source code(tar.gz)
    Source code(zip)
  • v0.18.1(Jun 1, 2019)

  • v0.19.0(May 30, 2019)

    Fixes and Functionality:

    • Unzip response body only for statuses != 204 (#1129) - drawski
    • Destroy stream on exceeding maxContentLength (fixes #1098) (#1485) - Gadzhi Gadzhiev
    • Makes Axios error generic to use AxiosResponse (#1738) - Suman Lama
    • Fixing Mocha tests by locking follow-redirects version to 1.5.10 (#1993) - grumblerchester
    • Allow uppercase methods in typings. (#1781) - Ken Powers
    • Fixing .eslintrc without extension (#1789) - Manoel
    • Consistent coding style (#1787) - Ali Servet Donmez
    • Fixing building url with hash mark (#1771) - Anatoly Ryabov
    • This commit fix building url with hash map (fragment identifier) when parameters are present: they must not be added after #, because client cut everything after #
    • Preserve HTTP method when following redirect (#1758) - Rikki Gibson
    • Add getUri signature to TypeScript definition. (#1736) - Alexander Trauzzi
    • Adding isAxiosError flag to errors thrown by axios (#1419) - Ayush Gupta
    • Fix failing SauceLabs tests by updating configuration - Emily Morehouse

    Documentation:

    • Add information about auth parameter to README (#2166) - xlaguna
    • Add DELETE to list of methods that allow data as a config option (#2169) - Daniela Borges Matos de Carvalho
    • Update ECOSYSTEM.md - Add Axios Endpoints (#2176) - Renan
    • Add r2curl in ECOSYSTEM (#2141) - 유용우 / CX
    • Update README.md - Add instructions for installing with yarn (#2036) - Victor Hermes
    • Fixing spacing for README.md (#2066) - Josh McCarty
    • Update README.md. - Change .then to .finally in example code (#2090) - Omar Cai
    • Clarify what values responseType can have in Node (#2121) - Tyler Breisacher
    • docs(ECOSYSTEM): add axios-api-versioning (#2020) - Weffe
    • It seems that responseType: 'blob' doesn't actually work in Node (when I tried using it, response.data was a string, not a Blob, since Node doesn't have Blobs), so this clarifies that this option should only be used in the browser
    • Add issue templates - Emily Morehouse
    • Update README.md. - Add Querystring library note (#1896) - Dmitriy Eroshenko
    • Add react-hooks-axios to Libraries section of ECOSYSTEM.md (#1925) - Cody Chan
    • Clarify in README that default timeout is 0 (no timeout) (#1750) - Ben Standefer
    Source code(tar.gz)
    Source code(zip)
Node.js web server framework for Http/1.1 or Http/2

Node.js web server framework for Http/1.1 or Http/2 Description: This is http framework, you can use it to create Http/1.1 or Http/2 service。 Now let'

Jeremy Yu 10 Mar 24, 2022
Ajax for Node.js and browsers (JS HTTP client)

superagent Small progressive client-side HTTP request library, and Node.js module with the same API, supporting many high-level HTTP client features T

Sloth 16.2k Jan 1, 2023
🏊🏾 Simplified HTTP request client.

Deprecated! As of Feb 11th 2020, request is fully deprecated. No new changes are expected to land. In fact, none have landed for some time. For more i

request 25.6k Jan 4, 2023
HTTP Client Utilities

@hapi/wreck HTTP client utilities. wreck is part of the hapi ecosystem and was designed to work seamlessly with the hapi web framework and its other c

hapi.js 383 Nov 1, 2022
HTTP Client for Visual Studio Code to POST JSON, XML, image, ... files to REST APIs

friflo POST Goal Main goal of this extension is storing all HTTP request & response data automatically as files in a VSCode workspace. This ensures th

Ullrich Praetz 2 Nov 18, 2021
HTTP server mocking and expectations library for Node.js

Nock HTTP server mocking and expectations library for Node.js Nock can be used to test modules that perform HTTP requests in isolation. For instance,

Nock 11.9k Jan 3, 2023
🌐 Human-friendly and powerful HTTP request library for Node.js

Sindre's open source work is supported by the community. Special thanks to: Human-friendly and powerful HTTP request library for Node.js Moving from R

Sindre Sorhus 12.5k Jan 9, 2023
Full-featured, middleware-oriented, programmatic HTTP and WebSocket proxy for node.js

rocky A multipurpose, full-featured, middleware-oriented and hackable HTTP/S and WebSocket proxy with powerful built-in features such as versatile rou

Tom 370 Nov 24, 2022
A full-featured http proxy for node.js

node-http-proxy node-http-proxy is an HTTP programmable proxying library that supports websockets. It is suitable for implementing components such as

http ... PARTY! 13.1k Jan 3, 2023
Simplifies node HTTP request making.

Requestify - Simplifies node HTTP request making. Requestify is a super easy to use and extendable HTTP client for nodeJS + it supports cache (-:. Ins

Ran Mizrahi 222 Nov 28, 2022
Run HTTP over UDP with Node.js

nodejs-httpp - Run HTTP over UDP based transport and Bring Web in Peer or P2P styles main js modules: udt.js, httpp.js, udts.js and httpps.js, that's

AppNet.Link 142 Aug 2, 2022
Library agnostic in-process recording of http(s) requests and responses

@gr2m/http-recorder Library agnostic in-process recording of http(s) requests and responses Install npm install @gr2m/http-recorder Usage import http

Gregor Martynus 4 May 12, 2022
make streaming http requests

hyperquest treat http requests as a streaming transport The hyperquest api is a subset of request. This module works in the browser with browserify. r

James Halliday 711 Sep 8, 2022
Wrap native HTTP requests with RFC compliant cache support

cacheable-request Wrap native HTTP requests with RFC compliant cache support RFC 7234 compliant HTTP caching for native Node.js HTTP/HTTPS requests. C

Luke Childs 259 Dec 20, 2022
Global HTTP/HTTPS proxy agent configurable using environment variables.

global-agent Global HTTP/HTTPS proxy configurable using environment variables. Usage Setup proxy using global-agent/bootstrap Setup proxy using bootst

Gajus Kuizinas 267 Dec 20, 2022
An HTTP Web Server for Chrome (chrome.sockets API)

An HTTP Web Server for Chrome (chrome.sockets API)

Kyle Graehl 1.2k Dec 31, 2022
A fully-featured Node.js REST client built for ease-of-use and resilience

flashheart A fully-featured Node.js REST client built for ease-of-use and resilience flashheart is built on http-transport to provide everything you n

BBC 118 Jun 21, 2022
A tiny Node.js module for retrieving a request's Details (ip,os,browser)

request-details A tiny Node.js module for retrieving a request's Details (ip,os,browser) ⌨️ Installation npm install request-details ⚙️ Usage const Re

sajjad MrX 14 Aug 20, 2022
一个基于node.js,express,socket.io的websocket非常棒的聊天室,代码简单很适合新手. A very nice websocket chat room based on node.js, express, socket.io. the code is simple, very suitable for novices

来来往下看,虽然教程又臭又长但是一步步地保姆式教学很简单的,毕竟我是真菜鸟嘛,当然什么都往细了说╮(╯_╰)╭ 一、使用方法 该教程内容所有指令都为Linux CentOS 7.x环境下指令,其他平台请您自行查询(⊙x⊙;) 1.下载node.js并下载Sakura_Chat_Room node.j

樱樱怪 10 Jul 21, 2022