zoukankan      html  css  js  c++  java
  • vue笔记(七)网络封装

    前后端分离的开发方式,造成了前端必须提前自己造假数据,并且来使用代理请求

    配置vue-cli的服务器代理

    开发阶段,需要在localhost:8080的devserver,到某个服务器来获取数据,比如,我自己用express写的localhost:3000;鉴于浏览器的同源策略阻拦,必须配置代理

    在根目录,即和package.json同级目录,配置vue.config.js;(注意,不是webpack.config.js)

    module.exports = {
      devServer: {
        proxy: {
          '/api': {
            "target": "http://localhost:3000/",
            pathRewrite: {
              '^/api': ''  //将api去除,比如在axios.get('/api/abc'),本来会访问local host/8080/api/abc;经过代理,访问的最终结果是:localhost:3000/abc
            }
          },'/search':{
            target: 'https://www.npmjs.com',
    'changeOrigin': true //代表请求头也转换过来,
    } } } }

     请求地址怎么写?

      假设当前项目的url是localhost:8080。axios.get('https://localhost:8080/abc')和axios.get('/abc')的效果是一样的,因为不写协议域名端口的话,会自动的添加当前的域,即当前的项目的协议域名端口。这样的好处是,当我们的项目在其他url上跑时,就不需要重新更改了。

    mokejs的作用:

      当后端服务器缺少某端口时候,通过mokejs,可以拦截axios请求,不去发送到服务器,而是直接返回数据。

      axios定义拦截规则,模拟json数据,返回给浏览器数据

    mockjs的两个注意:

      1.Mock.mock(url, "get",data):get必须小写,大写拦截不了

      2.Mock.setup({timeout:'300-1000'}); timeout的值必须用引号。

     在src下的mock目录:

      

      reset_mock.js是设置mock的,index.js是引入所有mock文件的,在main.js入口文件,只需要引入./mock/index.js即可。

    封装axios

      针对文档中定义的返回数据格式:code是0,msg是空串时,返回的是正常数据,可以将数据应用到页面,否则返回的是错误,,则需要弹出报错信息;

          

    可以利用axios拦截器来处理,对

    可以为自定义 axios 实例添加拦截器

    import axios from 'axios';
    import showMessage from '@/utils/showMessage.js';//引入弹窗
    const instance = axios.create();
    instance.interceptors.response.use(function (resonse) {
      if (resonse.data.code == 0) {//按照接口文档,code为0,返回正确的数据
        return resonse.data.data;
      } else {//拦截并弹出
        showMessage(resonse.data.msg, 'warn', 'danger')
      }
    }, function (err) {//这个error是请求错误而不是resopsebody里的错误
      console.log(err);
      showMessage('网络错误', 'warn', 'danger')
    })
    
    export default instance;

    在Vue.prototype上就可挂载这个instance了;

  • 相关阅读:
    .net framework 3.5 和 4.0 的结构图以及Namespaces参考,强烈推荐下载了解!
    ASP.NET操作简单的xml,增删改查
    Http协议详解版本一
    asp.net ToString()格式汇总
    UC首页图片切换
    vs2005部署错误解决方法:ASPNETMERGE : error 1013: Cannot find any assemblies that can be merged in the application bin folder.
    ADO.net,Linq to SQL和Entity Framework性能实测分析
    vs2010下载地址
    如何使用iReaper来下载微软视频教程
    面试经典70题
  • 原文地址:https://www.cnblogs.com/dangdanghepingping/p/14717569.html
Copyright © 2011-2022 走看看