axios - 2 - 参数字段

介绍 axios 的参数字段,都可以使用那些参数。

console.info

该系类文章旨在研究 axios 的实现 。在研究源码的基础上,去理解 axios 是如何实现 ajax 请求并更好的去使用这个库。

参数

说说在调用 axios 时,需要传入的参数。

// eg: axios(config)

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

以下是 axios github 上关于 config 可传入参数的具体描述

{
  // 请求地址
  url: '/user',

  // 请求方式
  method: 'get', // default

  // 请求地址的默认前缀
  baseURL: 'https://some-domain.com/api/',

  // 用于改变请求的函数数组
  transformRequest: [(data, header) => {
    // 改变请求内容
    // 仅仅需要 return data 即可
    return data;
  }],

  // 用于改变响应内容的函数数组
  transformResponse: [(data) => {
    // 改变响应内容
    return data;
  }],

  // 公共头信息添加
  headers: {'X-Requested-With': 'XMLHttpRequest'},

  // 添加 queryString
  params: {
    ID: 12345
  },

  // 修改 queryString 的编写方式
  paramsSerializer(params) {
    return Qs.stringify(params, {arrayFormat: 'brackets'})
  },

  // 需要传递的数据,比如 post / json
  data: {
    firstName: 'Fred'
  },

  // 设置请求超时时间
  timeout: 1000,

  // 是否需要认证
  withCredentials: false, // default: false

  // 自定义请求发送器,一般不去修改
  // 默认使用封装了 XMLHttpRequest 的发送器
  adapter (config) {
    /* ... */
  },

  // 需要认证时使用的用户名和密码
  auth: {
    username: 'janedoe',
    password: 's00pers3cret'
  },

  // 响应返回类型
  responseType: 'json', // default

  // 跨域攻击问题
  xsrfCookieName: 'XSRF-TOKEN', // default

  // 跨域攻击问题
  xsrfHeaderName: 'X-XSRF-TOKEN', // default

  // 上传时的钩子
  onUploadProgress: function (progressEvent) {
    // 处理数据
  },

  // 下载时的钩子
  onDownloadProgress: function (progressEvent) {
    // 处理数据
  },

  // 响应的最大数据量
  maxContentLength: 2000,

  // 用于判断响应是否为有效响应
  validateStatus (status) {
    return status >= 200 && status < 300; // default
  },

  // 定义最多被重定向几次
  maxRedirects: 5, // default

  // 自定义发出 http 或是 https 的客户端
  // 用于 node.js
  httpAgent: new http.Agent({ keepAlive: true }),
  httpsAgent: new https.Agent({ keepAlive: true }),

  // 如果需要代理的话,添加代理信息
  proxy: {
    host: '127.0.0.1',
    port: 9000,
    auth: : {
      username: 'mikeymike',
      password: 'rapunz3l'
    }
  },

  // 取消请求的钩子
  cancelToken: new CancelToken(function (cancel) {
    // ... 处理逻辑
    cancle('cancle message'); // 调用即可取消该请求,需传入取消信息。
    // ... 处理逻辑
  })
}

Read more

Gitlab 搭建

Gitlab 搭建

为什么? 想要自己搭建一个代码仓库无非是以下几点原因: 1. 公司内部项目 2. 自己的项目,但不适合在公网 3. 大部分的 git 仓库虽然有私有服务,但价格都不便宜,甚至不如一台云服务器来的便宜 配置及安装文档 Gitlab * 由于 gitlab 会用到 22 端口端口转发的化就走不了 git clone 的默认配置,且占用内存较高,不推荐使用 docker 进行部署; * 由于 gitlab 自带 nginx 默认情况下会与属主机的 nginx 冲突,因此推荐只使用 gitlab 自带的 nginx 进行端口转发; 最小化配置 # path /etc/gitlab/gitlab.rb external_url 'http://git.

By breeze
NPM 私服

NPM 私服

verdaccio 私服搭建,搭建过程中的一些问题以及解决: * docker compose 启动后,可能会报错:配置找不到,添加 config.yaml 文件到映射的 ./conf 目录即可,config.yaml 具体内容可在官网找到,下方也有最小化配置。 services: verdaccio: image: verdaccio/verdaccio container_name: 'verdaccio' networks: - node-network environment: - VERDACCIO_PORT=4873 - VERDACCIO_PUBLIC_URL=http://npm.demo.com ports: - '10001:4873'

By breeze