You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					169 lines
				
				4.9 KiB
			
		
		
			
		
	
	
					169 lines
				
				4.9 KiB
			| 
											3 years ago
										 | # 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'); | ||
|  | ``` |