Vue学习笔记《一》跨域代理及axios的使用。

从去年八月份开始,断断续续的接触vue ,中间由于跨域代理问题闹过一些尴尬的问题。写总结,促使我加深对知识点的记忆。有不对的地方请多指教。

代理跨域, 浏览器之间是有同源策略的,处于安全考虑不同域之间,不允许获取数据,img script audio等标签除外,但这些通常都是get的形式。而如果用js的ajax去远程获取的话就会触发同源策略,需要后台设置同意跨域才可以,比较麻烦。

所以Vue里用到了代理跨域,所谓代理跨域,就是代替前端用后端发出http请求。在vue的脚手架中,运行项目是npm run dev或者,npm run start ,其实是打开了它已经配置好的node服务器,vue的代理就是通过node来代替前端发起http请求。

在项目文件里找到config文件夹里的index.js  文件,修改dev下的proxyTable属性,在target里添加代理的目标地址。

设置好代理之后,在页面里引入axios,可直接使用get请求

import axios from 'axios'

axios.get('/api/apiserver/basic',{
        params:{
          pageIndex: 1,
          pageSize: 20,
          onlySustained: false,
          warnTimeStart: "2019-01-01",
          warnTimeEnd: "2019-05-06",

        }
      })
        .then(res=>{
          console.log(res)
          console.log(res.data)
           this.AllInfo=res.data
        })
        .catch(err=>{
          console.log(err)
        })

POST请求:

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

执行多个并发请求:

在执行多请求并发的时候,其中有一个请求失败,直接都不再请求了,而且会返回数据报错信息.

function getUserAccount() {
  return axios.get('/user/12345');
}

function getUserPermissions() {
  return axios.get('/user/12345/permissions');
}

axios.all([getUserAccount(), getUserPermissions()])
  .then(axios.spread(function (acct, perms) {
    // 两个请求现在都执行完成
  }));

请求的一些配置(常用的):只有url是必须的,如果没有指定method,请求将默认使用get方法。

url:"/getuser" 用于请求的服务器URL;

method:“get/post” 默认是get ,创建请求时使用的方法。

transform Request 允许在服务器发送前,修改请求数据
只能用在put post patch   这几个请求方法。后面数组中的函数必须返回一个字符串,或者ArrayBuffer或者Stream

transformRequest:[function(data){
对data 进行任意的转换处理;      
return data}];


  
transformResponse: 在传递给then,catch前 允许修改响应数据
  
headers是即将被发送的自定义请求头

params 是即将与请求一起发送的url参数。

paramsSerializer 是个负责params 序列化的函数。
  
data 是作为请求主体被发送的数据


只适用于这些请求方法put post patch 


在没有设置transformRequest时,必须是以下类型之一。


string,plain object ,ArrayBuffer,ArrayBufferView,urlSearchParams


浏览器专属: formData.file,Blob


node专属:Stream
  
timeout 指定请求超时的毫秒数(0表示无超时间) 如果请求花费了超过timeout的时间,请求将被中断。
  
withCredentials:false 表示跨域请求是否需要使用凭证。adapter:function(config){}:允许自定义处理请求,
  
  请求拦截,
 

 axios.interceptors.request.use(config=>{
  //在发送请求之前做的事;
  return config;},err=>{
  //请求错误的处理
  return.params.reject(err);});


  
  响应拦截,返回数据处理
 

 axios.interceptors.response.use(response=>{
  //对返回数据处理 如发送请求时添加加载动画,当数据返回时 关闭加载动画。
  
  return response};err=>{
  //对返回数据错误时 处理。也许要关闭加载动画,并提示加载失败。
  return Promise.reject(err);});

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值