vue 数据请求

1、配置代理

config/index.js中

 proxyTable: {
  "/api":{
    target:"http://localhost:3000",
    changeOrigin:true,
    pathRewrite:{
      "^/api":"http://localhost:3000"
    }
  }
}

注意:配置完代理后要重启项目

2、axios 阿可信 阿可西奥斯河

1、安装

npm i axios --save

2、引入

import axios from "axios"

3、使用

// post请求
axios({
url:"",
method:"post",
data:{}
}).then(res=>{

})
// get请求
axios({
url:"",
method:"get",
params:{}
}).then(res=>{

})

3、axios封装

1、在util/request.js中

import axios from "axios"

// 登录接口
export const movie= () => {
return axios({
  url: "/api/movieList",
  method: "get"
})
}

2、在对应组件页面使用

import {movie} from "../util/request"

mounted() {
movie().then(res=>{
  console.log(res);
  this.movies = res.data.data
})
}

4、拦截器

// 请求拦截:组件发起请求,配置项先到了请求拦截,请求拦截可以修改请求配置,然后retur n的结果发送给后端
axios.interceptors.request.use( config =>{
console.log("========此处是请求拦截器=========");
console.log(config);
console.log("==========拦截器结束============");

// 获取身份信息
var status = sessionStorage.getItem("status")
if(status){
  config.status = status
}
return config
})


// 响应拦截:后端相应数据,先到响应拦截器,拦截器可以处理数据,return的数据就是给组件的数据
axios.interceptors.response.use((res)=>{
console.log("========此处是响应拦截器=========");
console.log(res);
console.log("==========拦截器结束============");
if(!res.data.isok){
  alert("请检查账号或密码")
}
return res
})

5、post请求BUG

post请求:如果后端接收不到你的数据,如果参数中接收不到文件。可以借助qs解决 1、安装

npm i qs --save

2、引入

import qs from "qs"

3、使用 3.1、针对于后端收不到数据

  return axios({
  url: "/api/login",
  method: "post",
  data: qs.stringify(user)
})

3.2、针对于后端收不到文件

  var form = new FormData()
for (let i in user) {
  form.append(i, user[i])
}
return axios({
  url: "/api/login",
  method: "post",
  data: form
})
posted @ 2020-11-25 20:47  石海莹  阅读(185)  评论(0编辑  收藏  举报