axios相关方法的使用

Axios 文档
https://www.kancloud.cn/yunye/axios/234845


axios request API

// 本体 包括别名版本
axios(config);
axios(url[, config])

axios.request(config)

axios.get(url[, config])
axios.delete(url[, config])
axios.head(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])

综上,post put patch 三个方法默认第二参数为 data,即参数作为请求体request body传输。

当然如果需要以 url 形式传输data,需要把参数放在 configparams 选项中。

其余三个请求 get delete head 第二个参数即为 config


几个示例

axios({
  method: 'post',
  url: '/user/12345',
  data: {
    firstName: 'Fred',
    lastName: 'Flintstone'
  }
});

// 为给定 ID 的 user 创建请求
axios.get('/user?ID=12345')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

// 可选地,上面的请求可以这样做
axios.get('/user', {
    params: {
      ID: 12345
    }
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

axios.post('/user', {
    firstName: 'Fred',
    lastName: 'Flintstone'
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

config 内容

{
  // `url` 是用于请求的服务器 URL
  url: '/user',

  // `method` 是创建请求时使用的方法
  method: 'get', // 默认是 get

  // `baseURL` 将自动加在 `url` 前面,除非 `url` 是一个绝对 URL。
  // 它可以通过设置一个 `baseURL` 便于为 axios 实例的方法传递相对 URL
  baseURL: 'https://some-domain.com/api/',

  // `transformRequest` 允许在向服务器发送前,修改请求数据
  // 只能用在 'PUT', 'POST' 和 'PATCH' 这几个请求方法
  // 后面数组中的函数必须返回一个字符串,或 ArrayBuffer,或 Stream
  transformRequest: [function (data) {
    // 对 data 进行任意转换处理

    return data;
  }],

  // `transformResponse` 在传递给 then/catch 前,允许修改响应数据
  transformResponse: [function (data) {
    // 对 data 进行任意转换处理

    return data;
  }],

  // `headers` 是即将被发送的自定义请求头
  headers: {'X-Requested-With': 'XMLHttpRequest'},

  // `params` 是即将与请求一起发送的 URL 参数
  // 必须是一个无格式对象(plain object)或 URLSearchParams 对象
  params: {
    ID: 12345
  },

  // `paramsSerializer` 是一个负责 `params` 序列化的函数
  // (e.g. https://www.npmjs.com/package/qs, http://api.jquery.com/jquery.param/)
  paramsSerializer: function(params) {
    return Qs.stringify(params, {arrayFormat: 'brackets'})
  },

  // `data` 是作为请求主体被发送的数据
  // 只适用于这些请求方法 'PUT', 'POST', 和 'PATCH'
  // 在没有设置 `transformRequest` 时,必须是以下类型之一:
  // - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams
  // - 浏览器专属:FormData, File, Blob
  // - Node 专属: Stream
  data: {
    firstName: 'Fred'
  },

  // `timeout` 指定请求超时的毫秒数(0 表示无超时时间)
  // 如果请求话费了超过 `timeout` 的时间,请求将被中断
  timeout: 1000,
}

很长,贴了一点常用的,最常用还是 url method data params.

baseURL proxy 这种有时候会在封装的时候,在发出请求时统一配置。


axios response body

{
  // `data` 由服务器提供的响应
  data: {},

  // `status` 来自服务器响应的 HTTP 状态码
  status: 200,

  // `statusText` 来自服务器响应的 HTTP 状态信息
  statusText: 'OK',

  // `headers` 服务器响应的头
  headers: {},

  // `config` 是为请求提供的配置信息
  config: {}
}

以上


配置 axios

全局的默认值

axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

自定义示例的默认值 然后可以导出

// 创建实例时设置配置的默认值
var instance = axios.create({
  baseURL: 'https://api.example.com'
});

// 在实例已创建后修改默认值
instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;

配置优先级:临时 覆盖 实例 覆盖 全局


拦截器

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    return response;
  }, function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
  });

注意:返回值是一个封装的 Promise 对象

这里可以做一点报错弹窗之类的


欢迎来我的博客做客
zhyib.gitee.io
zhyib.github.io

<think>好的,我现在需要回答用户关于Axios方法及其用法的问题。首先,我需要回顾用户提供的三个引用内容,从中提取相关信息,并结合自己的知识来组织答案。 用户提供的引用包括安装Axios、基本用法、实例配置、请求方法、并发请求、拦截器、错误处理和取消请求等内容。同时,用户要求回答结构清晰,分步骤说明,并提供示例代码。此外,还要生成相关问题,并在引用处添加标识。 首先,我需要确定回答的结构。根据引用内容,可以分成以下几个部分:安装、基本用法、创建实例、请求方法、并发请求、拦截器、错误处理和取消请求。每个部分需要给出示例代码,并引用对应的来源。 在引用标识方面,引用[1]详细介绍了axios使用实例,包括实例配置、请求方法等,所以大部分内容会引用[1]。引用[2]提到安装Axios的命令,这应该在安装部分引用。引用[3]是关于原生实现axios,但用户的问题是关于Axios本身的用法,所以可能只在相关部分提到,比如在错误处理或取消请求时,如果有涉及的话。 接下来,需要确保所有代码示例符合用户的要求,使用正确的格式,比如代码块用反引号包裹,并注明语言类型。同时,行内数学表达式虽然用户问题中可能不涉及,但需要遵循系统级指令,但在此问题中可能不需要,所以可以忽略。 然后,检查每个部分是否有对应的引用,比如安装部分引用[2],创建实例、请求方法等引用[1],错误处理可能引用[1]和[3]。需要确保每个引用标识正确放置,例如在提到安装命令时添加[^2],在提到实例配置时添加[^1]。 最后,生成相关问题,这些问题应基于回答的内容,可能涉及优化方法、应用场景、错误处理的具体细节等。需要确保问题相关且有价值,帮助用户进一步了解Axios。 在组织内容时,要使用中文,保持段落清晰,分步骤说明,每个部分有小标题,代码示例正确,引用标识自然。需要避免使用Markdown格式,但根据用户的要求,回答中的用户可见层可能需要使用代码块,所以需要确认是否允许。根据用户提供的示例,他们使用了代码块,所以应该保留。 总结回答的结构: 1. 安装Axios(引用[2]) 2. 基本用法(引用[1]) 3. 创建实例(引用[1]) 4. 请求方法(GET, POST等,引用[1]) 5. 并发请求(引用[1]) 6. 拦截器(引用[1]) 7. 错误处理(引用[1]和[3]) 8. 取消请求(引用[1]) 每个部分给出示例代码,并在适当位置添加引用标识。最后生成相关问题,如优化配置、拦截器应用、取消请求的方法、与原生XHR对比等。</think>### Axios方法使用说明 #### 1. 安装 使用npm或yarn安装: ```bash npm install axios # 引用 ``` #### 2. 基本用法 直接通过`axios()`发起请求: ```javascript axios({ method: 'get', url: 'https://api.example.com/data', }).then(response => console.log(response.data)); ``` #### 3. 创建Axios实例 通过自定义配置创建独立实例: ```javascript const instance = axios.create({ baseURL: 'https://api.example.com', timeout: 5000, }); // 引用 ``` #### 4. 请求方法 支持GET、POST、PUT、PATCH、DELETE等方法: ```javascript // GET请求 axios.get('/user?ID=123').then(res => console.log(res)); // POST请求 axios.post('/user', { name: 'John', age: 30 }); // 引用 ``` #### 5. 并发请求 使用`axios.all`处理多个并行请求: ```javascript axios.all([ axios.get('/users'), axios.get('/posts') ]).then(axios.spread((usersRes, postsRes) => { console.log(usersRes.data, postsRes.data); })); // 引用 ``` #### 6. 拦截器 添加请求/响应拦截器: ```javascript // 请求拦截器 axios.interceptors.request.use(config => { config.headers.Authorization = 'Bearer token'; return config; }); // 响应拦截器 axios.interceptors.response.use(response => { return response.data; // 直接返回数据部分 }, error => { return Promise.reject(error); }); // 引用[^1] ``` #### 7. 错误处理 通过`try-catch`或`.catch()`捕获异常: ```javascript axios.get('/user/123') .catch(error => { if (error.response) { console.log('服务器返回异常状态码:', error.response.status); } else if (error.request) { console.log('请求未收到响应', error.request); } }); // 引用[^3] ``` #### 8. 取消请求 使用`CancelToken`取消进行中的请求: ```javascript const source = axios.CancelToken.source(); axios.get('/user', { cancelToken: source.token }).catch(thrown => { if (axios.isCancel(thrown)) { console.log('请求已取消:', thrown.message); } }); source.cancel('用户手动取消操作'); // 引用 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值