What axios Does
- Promise API — async/await friendly
- Isomorphic — same code browser + Node.js
- Interceptors — transform requests/responses globally
- Auto JSON — serializes request body, parses response
- Timeouts —
timeoutoption - Cancellation —
AbortControllersupport - Progress events — upload/download progress
- XSRF protection — cookie-based CSRF token
- Instance config —
axios.create({ baseURL, headers })
Architecture
Wraps XMLHttpRequest in browsers and http/https modules in Node.js. Request goes through interceptor chain → adapter → transformer → promise. Error is a normal rejected promise with err.response/err.request for inspection.
Self-Hosting
Client library only.
Key Features
- Isomorphic (browser + Node)
- Request/response interceptors
- Automatic JSON transforms
- Form data & multipart support
- Streaming in Node.js
- Cancellation via AbortController
- Progress events (uploads)
- TypeScript types built in
- AbortController and signal support
Comparison
| Client | Isomorphic | Interceptors | Auto JSON | Bundle |
|---|---|---|---|---|
| axios | Yes | Yes | Yes | ~14KB |
| fetch | Yes (modern) | No (manual) | No (manual) | 0 |
| ky | Yes (modern) | Yes | Yes | ~5KB |
| ofetch | Yes | Limited | Yes | ~4KB |
| got | Node only | Yes | Yes | ~40KB |
常见问题 FAQ
Q: fetch 已经够用了,为什么还要 axios? A: fetch 不自动 JSON parse、不自动 throw HTTP 错误、没有 interceptors、Node 老版本不支持。axios 开箱即用省时。
Q: 如何取消请求?
A: const controller = new AbortController(); axios.get(url, { signal: controller.signal }); controller.abort();
Q: 怎么处理 CSRF?
A: axios 默认读 XSRF-TOKEN cookie 并放到 X-XSRF-TOKEN header,配合 Rails/Laravel 的 CSRF 机制。
来源与致谢 Sources
- Docs: https://axios-http.com
- GitHub: https://github.com/axios/axios
- License: MIT