zoukankan      html  css  js  c++  java
  • 【Vue入门】利用VueCli搭建基本框架--创建Http帮助类,在登陆页面请求api数据并存储token(四)

    上节主要说了登陆页面的布局

    这节主要说Http类的简单封装以及在登陆页面调用api并将结果返回存储

    一、封装http帮助类,代码如下:

    //引入url常量类
    import urls from './urls.js'
    // 导入axios请求封装类
    import axios from 'axios'
    // 导入element的message及messagebox方法
    import { Message } from 'element-ui'  
    // 创建实例 create an axios instance
    const service = axios.create({
        baseURL: urls.BaseUrl, //process.env.VUE_APP_BASE_API, // url = base url + request url
        // withCredentials: true, // send cookies when cross-domain requests
        timeout: 2500 // 设置默认请求超时时间2.5秒
      })
    
    // 添加请求拦截器
    service.interceptors.request.use(function (config) {
        // 在发送请求之前做些什么
        return config;
      }, function (error) {
        // 对请求错误做些什么
        return Promise.reject(error);
      });
    
    // 添加响应拦截器
    service.interceptors.response.use(function (response) {
        var code = response.data.Code
        var message = response.data.Message
        if(code !== 10000){
            Message({
              message: message || '收到请求后比较code值出现异常,请检查大小写', // 消息内容
              type: 'error', // success,error,info,warning 弹框类型
              duration: 5 * 1000 // 显示时间
            })
        }else{
          console.log('请求正确,response值为:',response)
          //直接返回成功的结果集
          return response.data.Result;
        }
      }, function (error) {
        // 对响应错误做点什么
        return Promise.reject(error);
      });
    
    export default {
        service:service,
    }
    View Code

    使用了axios这个第三方的插件,创建了实例并初始化BaseUrl(官网)、另外利用提供的拦截请求和响应,对返回的数据做了处理。如果请求失败则弹框提醒,成功则获取实际Result对象返回

    我的Api返回结果示例如下:

    二、在login页面调用api请求 

    submitForm()提交方法代码
    //提交方法
                submitForm(){
                    //调用form表单的validate方法,对所有元素进行校验
                    this.$refs.form.validate((valid)=>{
                        if (valid) {
                            console.log('输入的账号为:' + this.formInfo.name);
                            console.log('输入的密码为:' + this.formInfo.pass);
                            
                            this.sendRequest()
                        } else {
                            console.log('error submit!!');
                            return false;
                        }
                    })
                },
    View Code
     
    sendRequest()代码
    //发送请求
                async sendRequest(){
                    let result
                    let data = {
                        stu_no: this.formInfo.name,
                        pwd: this.formInfo.pass,
                    };
                    let url = this.$urls.Login;
                    console.log('url是:' + url);
                    //调用post
                    await this.$request.service.post(url,data)
                        .then(response=> {
                            console.log('登陆页面拿到的response是',response);
                            console.log('登陆页面拿到的token是' + response.token);
                            //设置token
                            window.sessionStorage.setItem('token',response.token);
                            //设置跳转路由
                            this.$router.push({ path: '/Home' });
                        })
                        .catch(function (error) {
                            console.log('登陆页面错误的消息为:',error);
                        })
                    return result
                    
      }
    View Code

    PS:如果没有Api这里直接模拟写入一个token值然后调用路由跳转到Home也是可以的

    输入用户名、密码后台做简单判断然后跳转页面就能看到Home页面了,如下:

  • 相关阅读:
    haproxy 2.5 发布
    cube.js sql 支持简单说明
    基于graalvm 开发一个cube.js jdbc driver 的思路
    apache kyuubi Frontend 支持mysql 协议
    oceanbase 资源池删除说明
    基于obd 的oceanbase 扩容说明
    jfilter一个方便的spring rest 响应过滤扩展
    cube.js schema 定义多datasource 说明
    typescript 编写自定义定义文件
    meow 辅助开发cli 应用的工具
  • 原文地址:https://www.cnblogs.com/yhnet/p/13858151.html
Copyright © 2011-2022 走看看