Blame view

node_modules/axios/UPGRADE_GUIDE.md 4.7 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
  # 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 deprectated 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');
  ```