关于javascript:axios用法总结

通过向axios传递相干配置项 ( confg对象 ),创立axios申请:

axios({
    method: "post",
        url: “/user”,
        data: { firstName: "Fred", lastName: "Flintstone" },
        params: { id: 1234}
})

axios申请办法别名

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

这一段,信息量很大:
比方: axios.post(url[, data[, config]])
axios.post()的第一个参数是url,第2个参数是data参数(即post的body),第三个参数是config对象。

通过观察,应用别名时,method,url 和 data都不用在最初一个参数config对象中指定。

axios.all() 参数是可迭代对象,array,set 或者 map等
axios.spread() 参数是一个回调函数
axios.create( ) 参数是一个config对象

全局的axios默认配置:

axios.defaults.baseURL = "http://www.123.com/"
axios.defaults.headers.post['Content-Type'] = 'application/x-www-urlencoded'

当实例创立后,也可批改实例的默认配置

axiosInstance.defaults.headers.common['Autorization'] = AUTH_TOKEN

配置的优先级:

传入的config中的配置 > instance.defaults设置的配置 > axios.create() 中传入的配置

axios错误处理:
config配置项中退出了validateStatus后,会呈现上面扭转

validateStatus: (status) => {
      // return status <= 200 // e.response 会被打印进去
      return status <= 500 //e.response 不会被打印进去
    }

即:
validateStatus 函数返回true时,response会呈现在 instance.interceptors.response.use(successCallBack, errorCallBack) 的successCallBack;为 false时,会呈现在 errorCallBack中。

所以,拦挡非200的申请能够这么做:

validateStatus: (status) => {
      return status === 200
    }

将axios申请中的token用批量替换的形式进行替换

instance.interceptors.request.use((config) => {
    let url = config.url
    if(url.includes("{token}")) {
      config.url = url.replace("{token}", token)
    }
    return config
  }, (error) => {
    console.log("error 后果", error)
  })

当参数要以application / x-www-form-urlencoded格局发送数据。能够有以下办法(测试过):
1,借用qs.stringify,申请的headers的Content-Type会主动扭转为 application / x-www-form-urlencoded 数据也会变成url的格局
2,应用formData,看代码:
下面和上面的形式,axios.post传入params,都能够失去想要的后果

let params = new FormData()
params.append('name', obj.brokerCode)
params.append('longLink', obj.longLink)

const params = qs.stringify({
    name: obj.brokerCode,
    longLink: obj.longLink
})

以上就是axios申请,前面在应用过程中遇到问题,会持续补充。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理