| # Upgrade Guide | |
| ### 0.15.x -> 0.16.0 | |
| #### `Promise` Type Declarations | |
| The `Promise` type declarations have been removed from the axios typings in favor of the built-in type declarations. If you use axios in a TypeScript project that targets `ES5`, please make sure to include the `es2015.promise` lib. Please see [this post](https://blog.mariusschulz.com/2016/11/25/typescript-2-0-built-in-type-declarations) for details. | |
| ### 0.13.x -> 0.14.0 | |
| #### TypeScript Definitions | |
| The axios TypeScript definitions have been updated to match the axios API and use the ES2015 module syntax. | |
| Please use the following `import` statement to import axios in TypeScript: | |
| ```typescript | |
| import axios from 'axios'; | |
| axios.get('/foo') | |
| .then(response => console.log(response)) | |
| .catch(error => console.log(error)); | |
| ``` | |
| #### `agent` Config Option | |
| The `agent` config option has been replaced with two new options: `httpAgent` and `httpsAgent`. Please use them instead. | |
| ```js | |
| { | |
| // Define a custom agent for HTTP | |
| httpAgent: new http.Agent({ keepAlive: true }), | |
| // Define a custom agent for HTTPS | |
| httpsAgent: new https.Agent({ keepAlive: true }) | |
| } | |
| ``` | |
| #### `progress` Config Option | |
| The `progress` config option has been replaced with the `onUploadProgress` and `onDownloadProgress` options. | |
| ```js | |
| { | |
| // Define a handler for upload progress events | |
| onUploadProgress: function (progressEvent) { | |
| // ... | |
| }, | |
| // Define a handler for download progress events | |
| onDownloadProgress: function (progressEvent) { | |
| // ... | |
| } | |
| } | |
| ``` | |
| ### 0.12.x -> 0.13.0 | |
| The `0.13.0` release contains several changes to custom adapters and error handling. | |
| #### Error Handling | |
| Previous to this release an error could either be a server response with bad status code or an actual `Error`. With this release Promise will always reject with an `Error`. In the case that a response was received, the `Error` will also include the response. | |
| ```js | |
| axios.get('/user/12345') | |
| .catch((error) => { | |
| console.log(error.message); | |
| console.log(error.code); // Not always specified | |
| console.log(error.config); // The config that was used to make the request | |
| console.log(error.response); // Only available if response was received from the server | |
| }); | |
| ``` | |
| #### Request Adapters | |
| This release changes a few things about how request adapters work. Please take note if you are using your own custom adapter. | |
| 1. Response transformer is now called outside of adapter. | |
| 2. Request adapter returns a `Promise`. | |
| This means that you no longer need to invoke `transformData` on response data. You will also no longer receive `resolve` and `reject` as arguments in your adapter. | |
| Previous code: | |
| ```js | |
| function myAdapter(resolve, reject, config) { | |
| var response = { | |
| data: transformData( | |
| responseData, | |
| responseHeaders, | |
| config.transformResponse | |
| ), | |
| status: request.status, | |
| statusText: request.statusText, | |
| headers: responseHeaders | |
| }; | |
| settle(resolve, reject, response); | |
| } | |
| ``` | |
| New code: | |
| ```js | |
| function myAdapter(config) { | |
| return new Promise(function (resolve, reject) { | |
| var response = { | |
| data: responseData, | |
| status: request.status, | |
| statusText: request.statusText, | |
| headers: responseHeaders | |
| }; | |
| settle(resolve, reject, response); | |
| }); | |
| } | |
| ``` | |
| See the related commits for more details: | |
| - [Response transformers](https://github.com/axios/axios/commit/10eb23865101f9347570552c04e9d6211376e25e) | |
| - [Request adapter Promise](https://github.com/axios/axios/commit/157efd5615890301824e3121cc6c9d2f9b21f94a) | |
| ### 0.5.x -> 0.6.0 | |
| The `0.6.0` release contains mostly bug fixes, but there are a couple things to be aware of when upgrading. | |
| #### ES6 Promise Polyfill | |
| Up until the `0.6.0` release ES6 `Promise` was being polyfilled using [es6-promise](https://github.com/jakearchibald/es6-promise). With this release, the polyfill has been removed, and you will need to supply it yourself if your environment needs it. | |
| ```js | |
| require('es6-promise').polyfill(); | |
| var axios = require('axios'); | |
| ``` | |
| This will polyfill the global environment, and only needs to be done once. | |
| #### `axios.success`/`axios.error` | |
| The `success`, and `error` aliases were deprecated in [0.4.0](https://github.com/axios/axios/blob/master/CHANGELOG.md#040-oct-03-2014). As of this release they have been removed entirely. Instead please use `axios.then`, and `axios.catch` respectively. | |
| ```js | |
| axios.get('some/url') | |
| .then(function (res) { | |
| /* ... */ | |
| }) | |
| .catch(function (err) { | |
| /* ... */ | |
| }); | |
| ``` | |
| #### UMD | |
| Previous versions of axios shipped with an AMD, CommonJS, and Global build. This has all been rolled into a single UMD build. | |
| ```js | |
| // AMD | |
| require(['bower_components/axios/dist/axios'], function (axios) { | |
| /* ... */ | |
| }); | |
| // CommonJS | |
| var axios = require('axios/dist/axios'); | |
| ``` | |