123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- # Upgrade Guide
- ## 0.18.x -> 0.19.0
- ### HTTPS Proxies
- Routing through an https proxy now requires setting the `protocol` attribute of the proxy configuration to `https`
- ## 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');
- ```
|