优化首页的下拉刷新、数据排序、绑定后刷新
This commit is contained in:
243
node_modules/axios/README.md
generated
vendored
243
node_modules/axios/README.md
generated
vendored
@ -1,22 +1,19 @@
|
||||
|
||||
<h3 align="center"> 🥇 Gold sponsors <br> </h3> <table align="center" width="100%"><tr width="33.333333333333336%"><td align="center" width="33.333333333333336%"> <a href="https://stytch.com/?utm_source=oss-sponsorship&utm_medium=paid_sponsorship&utm_content=website-link&utm_campaign=axios-http" style="padding: 10px; display: inline-block"> <picture> <source width="200px" height="38px" media="(prefers-color-scheme: dark)" srcset="https://axios-http.com/assets/sponsors/stytch_white.png"> <img width="200px" height="38px" src="https://axios-http.com/assets/sponsors/stytch.png" alt="Stytch"/> </picture> </a> <p align="center" title="API-first authentication, authorization, and fraud prevention">API-first authentication, authorization, and fraud prevention</p> <p align="center"> <a href="https://stytch.com/?utm_source=oss-sponsorship&utm_medium=paid_sponsorship&utm_content=website-link&utm_campaign=axios-http"><b>Website</b></a> | <a href="https://stytch.com/docs?utm_source=oss-sponsorship&utm_medium=paid_sponsorship&utm_content=docs-link&utm_campaign=axios-http"><b>Documentation</b></a> | <a href="https://github.com/stytchauth/stytch-node?utm_source=oss-sponsorship&utm_medium=paid_sponsorship&utm_content=node-sdk&utm_campaign=axios-http"><b>Node.js</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://www.principal.com/about-us?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block"> <img width="133px" height="43px" src="https://axios-http.com/assets/sponsors/principal.svg" alt="Principal Financial Group"/> </a> <p align="center" title="We’re bound by one common purpose: to give you the financial tools, resources and information you need to live your best life.">We’re bound by one common purpose: to give you the financial tools, resources and information you ne...</p> <p align="center"> <a href="https://www.principal.com/about-us?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship"><b>www.principal.com</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://twicsy.com/buy-instagram-followers?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block"> <img width="85px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/buy-instagram-followers-twicsy.png" alt="Buy Instagram Followers Twicsy"/> </a> <p align="center" title="Buy real Instagram followers from Twicsy starting at only $2.97. Twicsy has been voted the best site to buy followers from the likes of US Magazine.">Buy real Instagram followers from Twicsy starting at only $2.97. Twicsy has been voted the best site...</p> <p align="center"> <a href="https://twicsy.com/buy-instagram-followers?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship"><b>twicsy.com</b></a> </p>
|
||||
</td></tr><tr width="33.333333333333336%"><td align="center" width="33.333333333333336%"> <a href="https://www.descope.com/?utm_source=axios&utm_medium=referral&utm_campaign=axios-oss-sponsorship" style="padding: 10px; display: inline-block"> <picture> <source width="200px" height="52px" media="(prefers-color-scheme: dark)" srcset="https://axios-http.com/assets/sponsors/descope_white.png"> <img width="200px" height="52px" src="https://axios-http.com/assets/sponsors/descope.png" alt="Descope"/> </picture> </a> <p align="center" title="Hi, we're Descope! We are building something in the authentication space for app developers and can’t wait to place it in your hands.">Hi, we're Descope! We are building something in the authentication space for app developers and...</p> <p align="center"> <a href="https://www.descope.com/?utm_source=axios&utm_medium=referral&utm_campaign=axios-oss-sponsorship"><b>Website</b></a> | <a href="https://docs.descope.com/?utm_source=axios&utm_medium=referral&utm_campaign=axios-oss-sponsorship"><b>Docs</b></a> | <a href="https://www.descope.com/community?utm_source=axios&utm_medium=referral&utm_campaign=axios-oss-sponsorship"><b>Community</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://buzzoid.com/buy-instagram-followers/?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block"> <img width="62px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/buzzoid-buy-instagram-followers.png" alt="Buzzoid - Buy Instagram Followers"/> </a> <p align="center" title="At Buzzoid, you can buy Instagram followers quickly, safely, and easily with just a few clicks. Rated world's #1 IG service since 2012.">At Buzzoid, you can buy Instagram followers quickly, safely, and easily with just a few clicks. Rate...</p> <p align="center"> <a href="https://buzzoid.com/buy-instagram-followers/?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship"><b>buzzoid.com</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://www.famety.com/?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block"> <img width="70px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/famety-buy-instagram-followers.png" alt="Famety - Buy Instagram Followers"/> </a> <p align="center" title="At Famety, you can grow your social media following quickly, safely, and easily with just a few clicks. Rated the world’s #1 social media service since 2013.">At Famety, you can grow your social media following quickly, safely, and easily with just a few clic...</p> <p align="center"> <a href="https://www.famety.com/?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship"><b>www.famety.com</b></a> </p>
|
||||
</td></tr><tr width="33.333333333333336%"><td align="center" width="33.333333333333336%"> <a href="https://poprey.com/?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block"> <img width="70px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/instagram-likes.png" alt="Poprey - Buy Instagram Likes"/> </a> <p align="center" title="Buy Instagram Likes">Buy Instagram Likes</p> <p align="center"> <a href="https://poprey.com/?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship"><b>poprey.com</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://betking.com.ua/sports-book/?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block"> <img width="70px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/bukmeker.jpeg" alt="Букмекер"/> </a> <p align="center" title="Ставки на спорт, БК в Україні">Ставки на спорт, БК в Україні</p> <p align="center"> <a href="https://betking.com.ua/sports-book/?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship"><b>betking.com.ua</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://ssmarket.net/buy-youtube-subscribers?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block"> <img width="70px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/youtube-subscribers-ssmarket.png" alt="Buy Youtube Subscribers"/> </a> <p align="center" title="SS Market offers professional social media services that rapidly increase your YouTube subscriber count, elevating your channel to a powerful position.">SS Market offers professional social media services that rapidly increase your YouTube subscriber co...</p> <p align="center"> <a href="https://ssmarket.net/buy-youtube-subscribers?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship"><b>ssmarket.net</b></a> </p>
|
||||
</td></tr><tr width="33.333333333333336%"><td align="center" width="33.333333333333336%"> <a href="https://opencollective.com/axios/contribute">💜 Become a sponsor</a>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://opencollective.com/axios/contribute">💜 Become a sponsor</a>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://opencollective.com/axios/contribute">💜 Become a sponsor</a>
|
||||
<h3 align="center"> 🥇 Gold sponsors <br> </h3> <table align="center" width="100%"><tr width="33.333333333333336%"><td align="center" width="33.333333333333336%"> <a href="https://stytch.com/?utm_source=oss-sponsorship&utm_medium=paid_sponsorship&utm_content=website-link&utm_campaign=axios-http" style="padding: 10px; display: inline-block" target="_blank"> <picture> <source width="200px" height="38px" media="(prefers-color-scheme: dark)" srcset="https://axios-http.com/assets/sponsors/stytch_white.png"> <img width="200px" height="38px" src="https://axios-http.com/assets/sponsors/stytch.png" alt="Stytch"/> </picture> </a> <p align="center" title="API-first authentication, authorization, and fraud prevention">API-first authentication, authorization, and fraud prevention</p> <p align="center"> <a href="https://stytch.com/?utm_source=oss-sponsorship&utm_medium=paid_sponsorship&utm_content=website-link&utm_campaign=axios-http" target="_blank"><b>Website</b></a> | <a href="https://stytch.com/docs?utm_source=oss-sponsorship&utm_medium=paid_sponsorship&utm_content=docs-link&utm_campaign=axios-http" target="_blank"><b>Documentation</b></a> | <a href="https://github.com/stytchauth/stytch-node?utm_source=oss-sponsorship&utm_medium=paid_sponsorship&utm_content=node-sdk&utm_campaign=axios-http" target="_blank"><b>Node.js</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://www.principal.com/about-us?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block" target="_blank"> <img width="133px" height="43px" src="https://axios-http.com/assets/sponsors/principal.svg" alt="Principal Financial Group"/> </a> <p align="center" title="We’re bound by one common purpose: to give you the financial tools, resources and information you need to live your best life.">We’re bound by one common purpose: to give you the financial tools, resources and information you ne...</p> <p align="center"> <a href="https://www.principal.com/about-us?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship" target="_blank"><b>www.principal.com</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://twicsy.com/buy-instagram-followers?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block" target="_blank"> <img width="85px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/dfa9670ad5e66eea17315332453c7f4e3a3b5905.png" alt="Buy Instagram Followers Twicsy"/> </a> <p align="center" title="Buy real Instagram followers from Twicsy starting at only $2.97. Twicsy has been voted the best site to buy followers from the likes of US Magazine.">Buy real Instagram followers from Twicsy starting at only $2.97. Twicsy has been voted the best site...</p> <p align="center"> <a href="https://twicsy.com/buy-instagram-followers?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship" target="_blank"><b>twicsy.com</b></a> </p>
|
||||
</td></tr><tr width="33.333333333333336%"><td align="center" width="33.333333333333336%"> <a href="https://www.descope.com/?utm_source=axios&utm_medium=referral&utm_campaign=axios-oss-sponsorship" style="padding: 10px; display: inline-block" target="_blank"> <picture> <source width="200px" height="52px" media="(prefers-color-scheme: dark)" srcset="https://axios-http.com/assets/sponsors/descope_white.png"> <img width="200px" height="52px" src="https://axios-http.com/assets/sponsors/descope.png" alt="Descope"/> </picture> </a> <p align="center" title="Hi, we're Descope! We are building something in the authentication space for app developers and can’t wait to place it in your hands.">Hi, we're Descope! We are building something in the authentication space for app developers and...</p> <p align="center"> <a href="https://www.descope.com/?utm_source=axios&utm_medium=referral&utm_campaign=axios-oss-sponsorship" target="_blank"><b>Website</b></a> | <a href="https://docs.descope.com/?utm_source=axios&utm_medium=referral&utm_campaign=axios-oss-sponsorship" target="_blank"><b>Docs</b></a> | <a href="https://www.descope.com/community?utm_source=axios&utm_medium=referral&utm_campaign=axios-oss-sponsorship" target="_blank"><b>Community</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://route4me.com/?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block" target="_blank"> <picture> <source width="200px" height="51px" media="(prefers-color-scheme: dark)" srcset="https://axios-http.com/assets/sponsors/route4me_white.png"> <img width="200px" height="51px" src="https://axios-http.com/assets/sponsors/route4me.png" alt="Route4Me"/> </picture> </a> <p align="center" title="Best Route Planning And Route Optimization Software">Best Route Planning And Route Optimization Software</p> <p align="center"> <a href="https://route4me.com/platform/route-optimization-software?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship" target="_blank"><b>Explore</b></a> | <a href="https://route4me.com/platform/marketplace/pricing?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship" target="_blank"><b>Free Trial</b></a> | <a href="https://route4me.com/contact?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship" target="_blank"><b>Contact</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://buzzoid.com/buy-instagram-followers/?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block" target="_blank"> <img width="62px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/e1625cb54e10ee40180c99d1495a462e9d6664a4.png" alt="Buzzoid - Buy Instagram Followers"/> </a> <p align="center" title="At Buzzoid, you can buy Instagram followers quickly, safely, and easily with just a few clicks. Rated world's #1 IG service since 2012.">At Buzzoid, you can buy Instagram followers quickly, safely, and easily with just a few clicks. Rate...</p> <p align="center"> <a href="https://buzzoid.com/buy-instagram-followers/?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship" target="_blank"><b>buzzoid.com</b></a> </p>
|
||||
</td></tr><tr width="33.333333333333336%"><td align="center" width="33.333333333333336%"> <a href="https://poprey.com/?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block" target="_blank"> <img width="70px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/e699ec99f7df3a203ddbc49d3c7712a907e628ea.png" alt="Poprey - Buy Instagram Likes"/> </a> <p align="center" title="Buy Instagram Likes">Buy Instagram Likes</p> <p align="center"> <a href="https://poprey.com/?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship" target="_blank"><b>poprey.com</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://requestly.com/?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block" target="_blank"> <img width="71px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/16450b4dc0deb9dab5a511bf2bc8b8b4ac33412f.png" alt="Requestly"/> </a> <p align="center" title="A lightweight open-source API Development, Testing & Mocking platform">A lightweight open-source API Development, Testing & Mocking platform</p> <p align="center"> <a href="https://requestly.com/?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship" target="_blank"><b>requestly.com</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://opencollective.com/axios/contribute" target="_blank" >💜 Become a sponsor</a>
|
||||
</td></tr></table>
|
||||
|
||||
<!--<div>marker</div>-->
|
||||
<br><br>
|
||||
<div align="center">
|
||||
<a href="https://axios-http.com"><img src="https://axios-http.com/assets/logo.svg" /></a><br>
|
||||
<a href="https://axios-http.com"><img src="https://axios-http.com/assets/logo.svg" alt="Axios" /></a><br>
|
||||
</div>
|
||||
|
||||
<p align="center">Promise based HTTP client for the browser and node.js</p>
|
||||
@ -39,6 +36,7 @@
|
||||
[](https://gitter.im/mzabriskie/axios)
|
||||
[](https://www.codetriage.com/axios/axios)
|
||||
[](https://snyk.io/test/npm/axios)
|
||||
[](CONTRIBUTORS.md)
|
||||
|
||||
|
||||
|
||||
@ -80,9 +78,13 @@
|
||||
- [Files Posting](#files-posting)
|
||||
- [HTML Form Posting](#-html-form-posting-browser)
|
||||
- [🆕 Progress capturing](#-progress-capturing)
|
||||
- [🆕 Rate limiting](#-progress-capturing)
|
||||
- [🆕 Rate limiting](#-rate-limiting)
|
||||
- [🆕 AxiosHeaders](#-axiosheaders)
|
||||
- [🔥 Fetch adapter](#-fetch-adapter)
|
||||
- [🔥 Custom fetch](#-custom-fetch)
|
||||
- [🔥 Using with Tauri](#-using-with-tauri)
|
||||
- [🔥 Using with SvelteKit](#-using-with-sveltekit-)
|
||||
- [🔥 HTTP2](#-http2)
|
||||
- [Semver](#semver)
|
||||
- [Promises](#promises)
|
||||
- [TypeScript](#typescript)
|
||||
@ -92,21 +94,22 @@
|
||||
|
||||
## Features
|
||||
|
||||
- Make [XMLHttpRequests](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) from the browser
|
||||
- Make [http](https://nodejs.org/api/http.html) requests from node.js
|
||||
- Supports the [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) API
|
||||
- Intercept request and response
|
||||
- Transform request and response data
|
||||
- Cancel requests
|
||||
- Automatic transforms for [JSON](https://www.json.org/json-en.html) data
|
||||
- 🆕 Automatic data object serialization to `multipart/form-data` and `x-www-form-urlencoded` body encodings
|
||||
- Client side support for protecting against [XSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery)
|
||||
- **Browser Requests:** Make [XMLHttpRequests](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) directly from the browser.
|
||||
- **Node.js Requests:** Make [http](https://nodejs.org/api/http.html) requests from Node.js environments.
|
||||
- **Promise-based:** Fully supports the [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) API for easier asynchronous code.
|
||||
- **Interceptors:** Intercept requests and responses to add custom logic or transform data.
|
||||
- **Data Transformation:** Transform request and response data automatically.
|
||||
- **Request Cancellation:** Cancel requests using built-in mechanisms.
|
||||
- **Automatic JSON Handling:** Automatically serializes and parses [JSON](https://www.json.org/json-en.html) data.
|
||||
- **Form Serialization:** 🆕 Automatically serializes data objects to `multipart/form-data` or `x-www-form-urlencoded` formats.
|
||||
- **XSRF Protection:** Client-side support to protect against [Cross-Site Request Forgery](https://en.wikipedia.org/wiki/Cross-site_request_forgery).
|
||||
|
||||
## Browser Support
|
||||
|
||||
 |  |  |  |  |
|
||||
--- | --- | --- | --- | --- |
|
||||
Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | 11 ✔ |
|
||||
| Chrome | Firefox | Safari | Opera | Edge |
|
||||
|:------:|:-------:|:------:|:-----:|:----:|
|
||||
|  |  |  |  |  |
|
||||
| Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ |
|
||||
|
||||
[](https://saucelabs.com/u/axios)
|
||||
|
||||
@ -196,7 +199,7 @@ Using unpkg CDN:
|
||||
|
||||
## Example
|
||||
|
||||
> **Note**: CommonJS usage
|
||||
> **Note**: CommonJS usage
|
||||
> In order to gain the TypeScript typings (for intellisense / autocomplete) while using CommonJS imports with `require()`, use the following approach:
|
||||
|
||||
```js
|
||||
@ -418,18 +421,18 @@ These are the available config options for making requests. Only the `url` is re
|
||||
params: {
|
||||
ID: 12345
|
||||
},
|
||||
|
||||
// `paramsSerializer` is an optional config that allows you to customize serializing `params`.
|
||||
|
||||
// `paramsSerializer` is an optional config that allows you to customize serializing `params`.
|
||||
paramsSerializer: {
|
||||
|
||||
// Custom encoder function which sends key/value pairs in an iterative fashion.
|
||||
encode?: (param: string): string => { /* Do custom operations here and return transformed string */ },
|
||||
|
||||
encode?: (param: string): string => { /* Do custom operations here and return transformed string */ },
|
||||
|
||||
// Custom serializer function for the entire parameter. Allows user to mimic pre 1.x behaviour.
|
||||
serialize?: (params: Record<string, any>, options?: ParamsSerializerOptions ),
|
||||
|
||||
// Configuration for formatting array indexes in the params.
|
||||
indexes: false // Three available options: (1) indexes: null (leads to no brackets), (2) (default) indexes: false (leads to empty brackets), (3) indexes: true (leads to brackets with indexes).
|
||||
serialize?: (params: Record<string, any>, options?: ParamsSerializerOptions ),
|
||||
|
||||
// Configuration for formatting array indexes in the params.
|
||||
indexes: false // Three available options: (1) indexes: null (leads to no brackets), (2) (default) indexes: false (leads to empty brackets), (3) indexes: true (leads to brackets with indexes).
|
||||
},
|
||||
|
||||
// `data` is the data to be sent as the request body
|
||||
@ -491,7 +494,7 @@ These are the available config options for making requests. Only the `url` is re
|
||||
|
||||
// `xsrfHeaderName` is the name of the http header that carries the xsrf token value
|
||||
xsrfHeaderName: 'X-XSRF-TOKEN', // default
|
||||
|
||||
|
||||
// `undefined` (default) - set XSRF header only for the same origin requests
|
||||
withXSRFToken: boolean | undefined | ((config: InternalAxiosRequestConfig) => boolean | undefined),
|
||||
|
||||
@ -541,7 +544,7 @@ These are the available config options for making requests. Only the `url` is re
|
||||
// Only either `socketPath` or `proxy` can be specified.
|
||||
// If both are specified, `socketPath` is used.
|
||||
socketPath: null, // default
|
||||
|
||||
|
||||
// `transport` determines the transport method that will be used to make the request.
|
||||
// If defined, it will be used. Otherwise, if `maxRedirects` is 0,
|
||||
// the default `http` or `https` library will be used, depending on the protocol specified in `protocol`.
|
||||
@ -551,7 +554,9 @@ These are the available config options for making requests. Only the `url` is re
|
||||
|
||||
// `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.
|
||||
// `keepAlive` that are not enabled by default before Node.js v19.0.0. After Node.js
|
||||
// v19.0.0, you no longer need to customize the agent to enable `keepAlive` because
|
||||
// `http.globalAgent` has `keepAlive` enabled by default.
|
||||
httpAgent: new http.Agent({ keepAlive: true }),
|
||||
httpsAgent: new https.Agent({ keepAlive: true }),
|
||||
|
||||
@ -832,26 +837,27 @@ The general structure of axios errors is as follows:
|
||||
| -------- | ---------- |
|
||||
| message | A quick summary of the error message and the status it failed with. |
|
||||
| name | This defines where the error originated from. For axios, it will always be an 'AxiosError'. |
|
||||
| stack | Provides the stack trace of the error. |
|
||||
| stack | Provides the stack trace of the error. |
|
||||
| config | An axios config object with specific instance configurations defined by the user from when the request was made |
|
||||
| code | Represents an axios identified error. The table below lists out specific definitions for internal axios error. |
|
||||
| status | HTTP response status code. See [here](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) for common HTTP response status code meanings.
|
||||
| status | HTTP response status code. See [here](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) for common HTTP response status code meanings.
|
||||
|
||||
Below is a list of potential axios identified error:
|
||||
| Code | Definition |
|
||||
| -------- | ---------- |
|
||||
| ERR_BAD_OPTION_VALUE | Invalid or unsupported value provided in axios configuration. |
|
||||
| ERR_BAD_OPTION | Invalid option provided in axios configuration. |
|
||||
| ECONNABORTED | Request timed out due to exceeding timeout specified in axios configuration. |
|
||||
| ETIMEDOUT | Request timed out due to exceeding default axios timelimit. |
|
||||
| ERR_NETWORK | Network-related issue.
|
||||
| ERR_FR_TOO_MANY_REDIRECTS | Request is redirected too many times; exceeds max redirects specified in axios configuration.
|
||||
| ERR_DEPRECATED | Deprecated feature or method used in axios.
|
||||
| ERR_BAD_RESPONSE | Response cannot be parsed properly or is in an unexpected format.
|
||||
| ERR_BAD_REQUEST | Requested has unexpected format or missing required parameters. |
|
||||
| ERR_CANCELED | Feature or method is canceled explicitly by the user.
|
||||
| ERR_NOT_SUPPORT | Feature or method not supported in the current axios environment.
|
||||
| ERR_INVALID_URL | Invalid URL provided for axios request.
|
||||
|
||||
| Code | Definition |
|
||||
| --- | --- |
|
||||
| ERR_BAD_OPTION_VALUE | Invalid value provided in axios configuration. |
|
||||
| ERR_BAD_OPTION | Invalid option provided in axios configuration. |
|
||||
| ERR_NOT_SUPPORT | Feature or method not supported in the current axios environment. |
|
||||
| ERR_DEPRECATED | Deprecated feature or method used in axios. |
|
||||
| ERR_INVALID_URL | Invalid URL provided for axios request. |
|
||||
| ECONNABORTED | Typically indicates that the request has been timed out (unless `transitional.clarifyTimeoutError` is set) or aborted by the browser or its plugin. |
|
||||
| ERR_CANCELED | Feature or method is canceled explicitly by the user using an AbortSignal (or a CancelToken). |
|
||||
| ETIMEDOUT | Request timed out due to exceeding default axios timelimit. `transitional.clarifyTimeoutError` must be set to `true`, otherwise a generic `ECONNABORTED` error will be thrown instead. |
|
||||
| ERR_NETWORK | Network-related issue. In the browser, this error can also be caused by a [CORS](https://developer.mozilla.org/ru/docs/Web/HTTP/Guides/CORS) or [Mixed Content](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content) policy violation. The browser does not allow the JS code to clarify the real reason for the error caused by security issues, so please check the console. |
|
||||
| ERR_FR_TOO_MANY_REDIRECTS | Request is redirected too many times; exceeds max redirects specified in axios configuration. |
|
||||
| ERR_BAD_RESPONSE | Response cannot be parsed properly or is in an unexpected format. Usually related to a response with `5xx` status code. |
|
||||
| ERR_BAD_REQUEST | The request has an unexpected format or is missing required parameters. Usually related to a response with `4xx` status code. |
|
||||
|
||||
## Handling Errors
|
||||
|
||||
@ -1279,7 +1285,7 @@ Sending `Blobs`/`Files` as JSON (`base64`) is not currently supported.
|
||||
Axios supports both browser and node environments to capture request upload/download progress.
|
||||
The frequency of progress events is forced to be limited to `3` times per second.
|
||||
|
||||
```js
|
||||
```js
|
||||
await axios.post(url, data, {
|
||||
onUploadProgress: function (axiosProgressEvent) {
|
||||
/*{
|
||||
@ -1298,13 +1304,13 @@ await axios.post(url, data, {
|
||||
loaded: number;
|
||||
total?: number;
|
||||
progress?: number;
|
||||
bytes: number;
|
||||
bytes: number;
|
||||
estimated?: number;
|
||||
rate?: number; // download speed in bytes
|
||||
download: true; // download sign
|
||||
}*/
|
||||
}
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
You can also track stream upload/download progress in node.js:
|
||||
@ -1314,7 +1320,7 @@ const {data} = await axios.post(SERVER_URL, readableStream, {
|
||||
onUploadProgress: ({progress}) => {
|
||||
console.log((progress * 100).toFixed(2));
|
||||
},
|
||||
|
||||
|
||||
headers: {
|
||||
'Content-Length': contentLength
|
||||
},
|
||||
@ -1340,7 +1346,7 @@ const {data} = await axios.post(LOCAL_SERVER_URL, myBuffer, {
|
||||
onUploadProgress: ({progress, rate}) => {
|
||||
console.log(`Upload [${(progress*100).toFixed(2)}%]: ${(rate / 1024).toFixed(2)}KB/s`)
|
||||
},
|
||||
|
||||
|
||||
maxRate: [100 * 1024], // 100KB/s limit
|
||||
});
|
||||
```
|
||||
@ -1378,13 +1384,13 @@ The headers object is always initialized inside interceptors and transformers:
|
||||
"My-set-header1": "my-set-value1",
|
||||
"My-set-header2": "my-set-value2"
|
||||
});
|
||||
|
||||
|
||||
request.headers.set('User-Agent', false); // disable subsequent setting the header by Axios
|
||||
|
||||
request.headers.setContentType('text/plain');
|
||||
|
||||
|
||||
request.headers['My-set-header2'] = 'newValue' // direct access is deprecated
|
||||
|
||||
|
||||
return request;
|
||||
}
|
||||
);
|
||||
@ -1410,7 +1416,7 @@ for(const [header, value] of headers) {
|
||||
|
||||
### new AxiosHeaders(headers?)
|
||||
|
||||
Constructs a new `AxiosHeaders` instance.
|
||||
Constructs a new `AxiosHeaders` instance.
|
||||
|
||||
```
|
||||
constructor(headers?: RawAxiosHeaders | AxiosHeaders | string);
|
||||
@ -1465,7 +1471,7 @@ const headers = new AxiosHeaders({
|
||||
'Content-Type': 'multipart/form-data; boundary=Asrf456BGe4h'
|
||||
});
|
||||
|
||||
console.log(headers.get('Content-Type'));
|
||||
console.log(headers.get('Content-Type'));
|
||||
// multipart/form-data; boundary=Asrf456BGe4h
|
||||
|
||||
console.log(headers.get('Content-Type', true)); // parse key-value pairs from a string separated with \s,;= delimiters:
|
||||
@ -1509,7 +1515,7 @@ Returns `true` if at least one header has been removed.
|
||||
clear(matcher?: AxiosHeaderMatcher): boolean;
|
||||
```
|
||||
|
||||
Removes all headers.
|
||||
Removes all headers.
|
||||
Unlike the `delete` method matcher, this optional matcher will be used to match against the header name rather than the value.
|
||||
|
||||
```ts
|
||||
@ -1564,7 +1570,7 @@ Returns a new `AxiosHeaders` instance.
|
||||
toJSON(asStrings?: boolean): RawAxiosHeaders;
|
||||
````
|
||||
|
||||
Resolve all internal headers values into a new null prototype object.
|
||||
Resolve all internal headers values into a new null prototype object.
|
||||
Set `asStrings` to true to resolve arrays as a string containing all elements, separated by commas.
|
||||
|
||||
### AxiosHeaders.from(thing?)
|
||||
@ -1620,12 +1626,111 @@ const fetchAxios = axios.create({
|
||||
const {data} = fetchAxios.get(url);
|
||||
```
|
||||
|
||||
The adapter supports the same functionality as `xhr` adapter, **including upload and download progress capturing**.
|
||||
The adapter supports the same functionality as `xhr` adapter, **including upload and download progress capturing**.
|
||||
Also, it supports additional response types such as `stream` and `formdata` (if supported by the environment).
|
||||
|
||||
### 🔥 Custom fetch
|
||||
|
||||
Starting from `v1.12.0`, you can customize the fetch adapter to use a custom fetch API instead of environment globals.
|
||||
You can pass a custom `fetch` function, `Request`, and `Response` constructors via env config.
|
||||
This can be helpful in case of custom environments & app frameworks.
|
||||
|
||||
Also, when using a custom fetch, you may need to set custom Request and Response too. If you don't set them, global objects will be used.
|
||||
If your custom fetch api does not have these objects, and the globals are incompatible with a custom fetch,
|
||||
you must disable their use inside the fetch adapter by passing null.
|
||||
|
||||
> Note: Setting `Request` & `Response` to `null` will make it impossible for the fetch adapter to capture the upload & download progress.
|
||||
|
||||
Basic example:
|
||||
|
||||
```js
|
||||
import customFetchFunction from 'customFetchModule';
|
||||
|
||||
const instance = axios.create({
|
||||
adapter: 'fetch',
|
||||
onDownloadProgress(e) {
|
||||
console.log('downloadProgress', e);
|
||||
},
|
||||
env: {
|
||||
fetch: customFetchFunction,
|
||||
Request: null, // undefined -> use the global constructor
|
||||
Response: null
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
#### 🔥 Using with Tauri
|
||||
|
||||
A minimal example of setting up Axios for use in a [Tauri](https://tauri.app/plugin/http-client/) app with a platform fetch function that ignores CORS policy for requests.
|
||||
|
||||
```js
|
||||
import { fetch } from "@tauri-apps/plugin-http";
|
||||
import axios from "axios";
|
||||
|
||||
const instance = axios.create({
|
||||
adapter: 'fetch',
|
||||
onDownloadProgress(e) {
|
||||
console.log('downloadProgress', e);
|
||||
},
|
||||
env: {
|
||||
fetch
|
||||
}
|
||||
});
|
||||
|
||||
const {data} = await instance.get("https://google.com");
|
||||
```
|
||||
|
||||
#### 🔥 Using with SvelteKit
|
||||
|
||||
[SvelteKit](https://svelte.dev/docs/kit/web-standards#Fetch-APIs) framework has a custom implementation of the fetch function for server rendering (so called `load` functions), and also uses relative paths,
|
||||
which makes it incompatible with the standard URL API. So, Axios must be configured to use the custom fetch API:
|
||||
|
||||
```js
|
||||
export async function load({ fetch }) {
|
||||
const {data: post} = await axios.get('https://jsonplaceholder.typicode.com/posts/1', {
|
||||
adapter: 'fetch',
|
||||
env: {
|
||||
fetch,
|
||||
Request: null,
|
||||
Response: null
|
||||
}
|
||||
});
|
||||
|
||||
return { post };
|
||||
}
|
||||
```
|
||||
|
||||
## 🔥 HTTP2
|
||||
|
||||
In version `1.13.0`, experimental `HTTP2` support was added to the `http` adapter.
|
||||
The `httpVersion` option is now available to select the protocol version used.
|
||||
Additional native options for the internal `session.request()` call can be passed via the `http2Options` config.
|
||||
This config also includes the custom `sessionTimeout` parameter, which defaults to `1000ms`.
|
||||
|
||||
```js
|
||||
const form = new FormData();
|
||||
|
||||
form.append('foo', '123');
|
||||
|
||||
const {data, headers, status} = await axios.post('https://httpbin.org/post', form, {
|
||||
httpVersion: 2,
|
||||
http2Options: {
|
||||
// rejectUnauthorized: false,
|
||||
// sessionTimeout: 1000
|
||||
},
|
||||
onUploadProgress(e) {
|
||||
console.log('upload progress', e);
|
||||
},
|
||||
onDownloadProgress(e) {
|
||||
console.log('download progress', e);
|
||||
},
|
||||
responseType: 'arraybuffer'
|
||||
});
|
||||
```
|
||||
|
||||
## 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.
|
||||
Since Axios has reached a `v.1.0.0` we will fully embrace semver as per the spec [here](https://semver.org/)
|
||||
|
||||
## Promises
|
||||
|
||||
@ -1676,4 +1781,4 @@ axios is heavily inspired by the [$http service](https://docs.angularjs.org/api/
|
||||
|
||||
## License
|
||||
|
||||
[MIT](LICENSE)
|
||||
[](LICENSE)
|
||||
|
||||
Reference in New Issue
Block a user