axios的config配置详解

本文对axios官网文档的config配置部分进行了翻译与部分举例,原版请前往 axios

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

  // ‘method’是发出请求时使用的请求方法。
  method: 'get', // 默认值

  /* 
  	 除非 url 是绝对的,否则 baseURL 将会被加在 url 前面。
     为 axios 的实例设置‘baseURL’来传递相对 url 会很方便。
     可以减去许多重复的字段。
  */
  baseURL: 'https://some-domain.com/api/',

  /*
     ‘transformRequest’允许在请求数据发送到服务器之前对其进行更改,
     这只适用于请求方法“ PUT”、“ POST”、“ PATCH”和“ DELETE”。
     数组中的最后一个函数必须返回一个字符串或一个Buffer、ArrayBuffer、FormData 或 Stream 的实例。
     可以修改 headers 对象。
  */
  transformRequest: [function (data, headers) {
    // 做任何你想转换数据的事情
    return data;
  }],

  // `transformresponse` 允许在将响应数据传递给 then/catch 之前对其进行更改。
  transformResponse: [function (data) {
    // 做任何你想转换数据的事情
    return data;
  }],

  // `headers` 是要发送的自定义标头。
  headers: {'X-Requested-With': 'XMLHttpRequest'},

  /*
     URLSearchParams对象举例:
     	let paramsString = "q=URLUtils.searchParams&topic=api"
     	let searchParams = new URLSearchParams(paramsString);
    	for (let p of searchParams) {
    		console.log(p);
    		// 结果打印两个json对象
    		// ["q", "URLUtils.searchParams"]
    		// ["topic", "api"]
     	}
  */
  
  // `params` 是要随请求发送的 URL 参数。
  // 必须是普通对象或 URLSearchParams 对象。
  params: {
    ID: 12345
  },

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

  /*
     `data` 是要作为请求正文发送的数据。
     仅适用于请求方法 'PUT'、'POST'、'DELETE 和 'PATCH'。
     当没有设置 `transformRequest` 时,必须是以下类型之一:
     - 字符串、普通对象、ArrayBuffer、ArrayBufferView、URLSearchParams
     - 仅限浏览器:FormData、File、Blob
     - 仅限Node:Stream、Buffer
  */
  data: {
    firstName: 'Fred'
  },
  
  // 将数据发送到 body 方法的语法替代方法。
  // post 只发送值,而不是键。
  data: 'Country=Brasil&City=Belo Horizonte',

  // `timeout` 指定请求超时前的毫秒数。如果请求时间超过`timeout`,请求将被中止。
  timeout: 1000, // 默认是0

  // `withCredentials` 指示是否应使用凭据进行跨站点访问控制请求。
  withCredentials: false, // 默认值

  // `adapter` 允许自定义处理请求,这使得测试更容易。返回一个Promise并提供有效的响应。
  adapter: function (config) {
    /* ... */
  },

  /*
     `auth` 表示应该使用 HTTP 基本身份验证,并提供凭据。
     这将设置一个 `Authorization` 标头,覆盖您使用 `headers` 设置的任何现有的 `Authorization` 自定义标头。
     请注意,只有 HTTP 基本身份验证可通过此参数进行配置。
     对于不记名令牌等,请改用“Authorization”自定义标头。
  */
  auth: {
    username: 'janedoe',
    password: 's00pers3cret'
  },

  /* 
     `responseType` 表示服务器将响应的数据类型,选项为:
     'arraybuffer', 'document', 'json', 'text', 'stream'
     仅限浏览器:'blob'
     会对响应结果自动进行转换
  */
  responseType: 'json', // 默认值

  // `responseEncoding` 表示用于解码响应的编码(仅限 Node.js)
  // 注意:忽略“stream”或客户端请求的 `responseType`
  responseEncoding: 'utf8', // 默认值
  
  // `xsrfCookieName` 是用作 xsrf 令牌值的 cookie 的名称
  xsrfCookieName: 'XSRF-TOKEN', // 默认值

  // `xsrfHeaderName` 是携带 xsrf 令牌值的 http 标头的名称
  xsrfHeaderName: 'X-XSRF-TOKEN', // 默认值

  // `onUploadProgress` 允许处理上传的进度事件
  // 仅限浏览器
  onUploadProgress: function (progressEvent) {
    // 使用本机进度事件做任何您想做的事情
  },

  // `onDownloadProgress` 允许处理下载的进度事件
  // 仅限浏览器
  onDownloadProgress: function (progressEvent) {
    // 使用本机进度事件做任何您想做的事情
  },

  // `maxContentLength` 定义了 node.js 中允许的 http 响应内容的最大大小(以字节为单位)
  maxContentLength: 2000,

  // `maxBodyLength`定义了允许的 http 请求内容的最大大小(以字节为单位)
  // 仅限Node
  maxBodyLength: 2000,

  /*
     `validateStatus` 定义是解析还是拒绝给定 HTTP 响应状态代码的承诺。
     如果 `validateStatus` 返回 `true`(或设置为 `null` 或 `undefined`),
     promise 将被解析;否则,承诺将被拒绝。
     默认状态响应码在200到300是成功
  */
  validateStatus: function (status) {
    return status >= 200 && status < 300; 
  },

  // `maxRedirects` 定义了 node.js 中最大的跳转次数(一个服务发送请求的时候做的跳转)。
  // 如果设置为 0,则不会进行跳转。
  maxRedirects: 5, // 默认值(最多跳转五次)

  /*
     `socketPath` 定义了一个在 node.js 中使用的 UNIX 套接字。
     例如'varrundocker.sock' 向 docker 守护进程发送请求。
     只能指定 `socketPath` 或 `proxy`其中一个。
     如果两者都指定,则使用`socketPath`。
  */
  socketPath: null, // 默认值

  // `httpAgent` 和 `httpsAgent` 分别定义了在 node.js 中执行
  // http 和 https 请求时要使用的自定义代理。这允许添加默认情况下未启用的选项,如“keepAlive”。
  httpAgent: new http.Agent({ keepAlive: true }),
  httpsAgent: new https.Agent({ keepAlive: true }),

  /*
     `proxy` 定义了代理服务器的主机名、端口和协议。
     您还可以使用传统的 `http_proxy` 和 `https_proxy` 环境变量来定义您的代理。
     如果您在代理配置中使用环境变量,您还可以将`no_proxy`环境变量定义为不应被代理的域的逗号分隔列表。
     使用 `false` 禁用代理,忽略环境变量。
     `auth` 表示应该使用 HTTP Basic auth 连接到代理,并提供凭据。
     这将设置一个 `Proxy-Authorization` 标头,覆盖您使用 `headers`
     设置的任何现有的 `Proxy-Authorization` 自定义标头。
     如果代理服务器使用 HTTPS,那么您必须将协议设置为 `https`。
  */
  proxy: {
    protocol: 'https',
    host: '127.0.0.1',
    port: 9000,
    auth: {
      username: 'mikeymike',
      password: 'rapunz3l'
    }
  },

  // `cancelToken` 指定可用于取消请求的取消令牌
  cancelToken: new CancelToken(function (cancel) {
  }),
  /* 例1:
     const CancelToken = axios.CancelToken;
     const source = CancelToken.source();
     axios.get('/user/12345', {
    	cancelToken: source.token
     }).catch(function (thrown) {
     if (axios.isCancel(thrown)) {
    	console.log('Request canceled', thrown.message);
     } else {
    	// 处理错误
     }
     });
     axios.post('/user/12345', {
     	name: 'new name'
     }, {
    	cancelToken: source.token
     })
  // 取消请求(message参数是可选的)
     source.cancel('Operation canceled by the user.');

     例2:
     const CancelToken = axios.CancelToken;
     let cancel;
     axios.get('/user/12345', {
    	cancelToken: new CancelToken(function executor(c) {
    		// 一个执行器函数接收一个取消函数作为参数
    		cancel = c;
    	})
     });
     // 取消请求
     cancel();
  */

  /*
     `decompress` 指示是否应自动解压缩响应正文。
     如果设置为 `true` 也会从所有解压缩响应的响应对象中删除“内容编码”标头
     - 仅限Node(XHR 无法关闭解压缩)
  */
  decompress: true // 默认值

  // 可能会在较新版本中删除的向后兼容性过渡选项
  transitional: {
    /*
       无声 JSON 解析模式 
       `true` - 如果解析失败,则忽略 JSON 解析错误并将 response.data 设置为 null(旧行为) 
       `false` - 如果 JSON 解析失败,则抛出 SyntaxError(注意:responseType 必须设置为 'json')
    */
    silentJSONParsing: true; // 当前 Axios 版本的默认值

    // 尝试将响应字符串解析为 JSON,即使 `resposeType` 不是 'json'
    forcedJSONParsing: true;
    
    // 在请求超时时抛出 ETIMEDOUT 错误而不是通用的 ECONNABORTED
    clarifyTimeoutError: false;
  }
}
  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用axios发送网络请求时,可以通过headers配置参数来自定义请求头。以下是常用的请求头配置: 1. `Content-Type`:设置请求体数据格式,常见的有`application/json`、`application/x-www-form-urlencoded`、`multipart/form-data`等,其中`application/json`表示请求体数据为JSON格式,`application/x-www-form-urlencoded`表示请求体数据为URL编码格式。 2. `Authorization`:设置请求的认证信息,常见的有`Bearer token`、`Basic username:password`等,其中`Bearer token`表示使用JWT(JSON Web Token)方式进行认证,`Basic username:password`表示使用HTTP基本认证方式进行认证。 3. `Accept`:设置请求期望的响应数据格式,常见的有`application/json`、`text/html`、`text/plain`等,其中`application/json`表示期望响应数据为JSON格式,`text/html`表示期望响应数据为HTML格式。 4. `User-Agent`:设置客户端标识,常见的有`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36`等,其中`Mozilla`表示浏览器类型,`Windows NT 10.0`表示操作系统类型,`Chrome/58.0.3029.110`表示浏览器版本号。 以下是一个完整的axios请求示例,包括请求头的配置: ``` import axios from 'axios'; axios.defaults.baseURL = 'http://example.com/api'; axios.defaults.headers.common['Authorization'] = 'Bearer token'; axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; axios.post('/login', { username: 'admin', password: 'password' }).then(response => { console.log(response.data); }).catch(error => { console.error(error); }); ``` 在以上示例中,我们设置了请求的基础URL为'http://example.com/api',并在请求头中添加了一个名为'Authorization'的字段,其值为'token',还设置了POST请求的请求体数据格式为URL编码格式。我们发送了一个POST请求,请求体数据为一个包含用户名和密码的对象,最后我们使用了Promise的方式处理了请求的响应和错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值