Vue的网络请求

2019-07-22 14:33:54 浏览数 (1)

Vue的高版本里, 建议使用 axios 发起网络请求

  1. 安装
代码语言:javascript复制
npm install axios
npm install --save axios vue-axios

2.在入口文件配置

代码语言:javascript复制
import Vue from 'vue'
import axios from 'axios'
import VueAxios from 'vue-axios'
 
Vue.use(VueAxios, axios)

3. 组件里用按钮绑定事件用来发起请求

代码语言:javascript复制
<template>
    <div>
      <button @click="getRequest">get请求</button>
      <button @click="postRequest">post请求</button>
    </div>
</template>

 methods:{
   getRequest(){}
   postRequest(){}
 }

完整的页面代码:

代码语言:javascript复制
<template>
    <div>
      <button @click="getRequest">get请求</button>
      <button @click="postRequest">post请求</button>
    </div>
</template>

<script>
  import Vue from 'vue';
  /*
  * Vue的高版本里, 建议使用 axios 发起网络请求
  * */
    export default {
        name: "Communication",
      methods:{
        getRequest(){
          Vue.axios.get('/api/get', {
            params: {
              name:'砂瀑我爱罗',
              hobby:'篮球,唱歌'
            }
          }).then((response) => {
            console.log(response.data)
          }).catch((error)=>{
            console.log("请求错误!",error);
          });
        },
        postRequest(){
          Vue.axios.post('/api/post', {
            firstName: '卡西',
            lastName: '卡'
          },{
            transformRequest:[function (data,headers) {
              //data就是要传递的数据,现在是对象格式,我们需要将其转换为参数字符串格式
              //headers也是对象,用于设置请求头的信息
              headers.post["Content-Type"]="application/x-www-form-urlencoded";
              
              //对data对象进行处理
              //根据参数对象拼接 URL query 字符串
              let allstr = '';
              for (let key in data){
                let str=key "=" data[key] "&";
                allstr =str;
              }
              // 去掉最后一个&字符
              allstr=allstr.slice(0,allstr.length-1);
              console.log(allstr);
              return allstr;
            }]
          }).then(function (response) {
              console.log(response.data);
            }).catch(function (error) {
              console.log(error);
            });
        }
      }
    }
</script>

<style scoped>
  div{
    width: 100%;
    height: 75%;
    background-color: #c4ceff;
  }
</style>

4.创建(server)文件夹,创建js文件连接数据库

记得装模块.

配置: 在config文件夹下的index.js文件做如下配置:

代码语言:javascript复制
proxyTable: {
      // 配置网络请求的转发代理
      "/api":{
        target: 'http://127.0.0.1:1023',
        changeOrigin: true
      }
    },
代码语言:javascript复制
let express = require("express");
let bp = require('body-parser');

let app = express();
// app.use(bp.urlencoded({extended:false}));
app.use(bp.json());
app.get('/api/get',function (req,res) {
    console.log(req.query.name,req.query.hobby);
    res.json({name:'卡卡西',hobby:'你好'});
});
app.post('/api/post',function (req,res) {
    console.log(req.body.firstName,req.body.lastName);
    res.send("111");
});


app.listen(1023);

0 人点赞