zoukankan      html  css  js  c++  java
  • Vue简单封装axios—解决post请求后端接收不到参数问题

    1.在src/下新建api文件夹,api/下新建index.js和public.js

    在public.js中:

     1 import axios from 'axios';
     2 import qs from 'qs'
     3 import router from '../router'
     4 import { MessageBox} from 'mint-ui'
     5 
     6 // 注意点,按照以下写
     7 var instance = axios.create();
     8 instance.defaults.timeout = 10000;
     9 instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
    10 
    11 export default {
    12     fetchGet(url, params = {}) {
    13         return new Promise((resolve, reject) => {
    14             axios.get(url, params).then(res => {
    15                 if(res.data.code === 302) {
    16                     MessageBox('提示', '登录失效,请重新登录');
    17                     MessageBox.alert('登录失效,请重新登录', '提示').then(action => {   
    18                         router.push("/login");
    19                     });
    20                 }
    21                 resolve(res.data);
    22             }).catch(error => {
    23                 reject(error);
    24             })
    25         })
    26     },
    27     fetchPost(url, params = {}) {
    28         /*  
    29         axios post请求后端接收不到参数问题:
    30 
    31         解决方案一:有效,但是兼容性不是很好,不是所有浏览器都支持
    32             let data = new URLSearchParams()
    33             for (var key in params) {
    34                 data.append(key, params[key])
    35             }
    36         */
    37         
    38         // 解决方案二:使用qs模块(axios中自带),使用qs.stringify()序列化params
    39         return new Promise((resolve, reject) => {
    40             axios.post(url, qs.stringify(params)).then(res => {
    41                 resolve(res.data);
    42             }).catch(error => {
    43                 reject(error);
    44             })
    45         })
    46     }
    47 }

    2.在index.js中:

    1 import http from './public'
    2 
    3 export const getStation = (params) => {
    4     return http.fetchGet('/hydro/rest/getBelongUser', params);
    5 }
    6 
    7 export const userLogin = (params) => {
    8     return http.fetchPost("/hydro/rest/login", params);
    9 }

    3.在Login.vue中调用post请求方法:

     1 <template>
     2     <div class="login">
     3         <h1>登录页面</h1>
     4         <input type="text" placeholder="请输入用户名" v-model="Username">
     5         <input type="password" placeholder="请输入密码" v-model="Password">
     6         <input type="button" value="登录" @click="toLogin">
     7     </div>
     8 </template>
     9 
    10 <script>
    11 import {userLogin} from "../../api/index"
    12 
    13 export default {
    14   name: 'app',
    15   data() {
    16     return {
    17       Username: "",
    18       Password: ""
    19     }
    20   },
    21   methods: {
    22     toLogin() {
    23         let params = {
    24             username: this.Username,
    25             password: this.Password
    26         };
    27   
    28         userLogin(params).then(res => {
    29             if(res.code === 200) {
    30                 this.$router.push("/home")
    31             }
    32         })
    33     }
    34   }
    35 }
    36 </script>

    4.在Home.vue调用get请求方法

     1 <template>
     2     <h1 class="home">
     3         {{stationName}}
     4     </h1>
     5 </template>
     6 
     7 <script>
     8 import {getStation} from "../../api/index"
     9 
    10 export default {
    11     data() {
    12         return{
    13             stationName: ""
    14         }
    15     },
    16     created() {
    17         getStation().then(res => {
    18             this.stationName = res.msg;
    19         })
    20     }
    21 }
    22 </script>

    5.具体封装axios的demo地址:https://github.com/cry875258789/axios-demo

  • 相关阅读:
    Android Lock Screen Orientation
    android studio修改新项目package名称
    DevExpress控件GridView挂下拉控件无法对上值
    Datawindow.net+access数据窗口制作方法
    LR11中web_save_timestamp_param
    LR自带网站飞机订票系统 启动
    MySQL ODBC驱动安装和配置数据源
    【笔记】LR配置ODBC连接数据库进行参数化(mysql )未完待续
    【笔记】LR录制方式和常用函数
    【笔记】http1.1支持的7种请求方法
  • 原文地址:https://www.cnblogs.com/tian-long/p/8869191.html
Copyright © 2011-2022 走看看