vue-cli uses axios to simulate request interface data

前期准备
1、vue create 生成项目
2、安装express  、axios

1. Production Project

vue create vuedemo

Two, install express, axios

npm install express
npm install axios

Three, configuration items

配置文件如下

Insert picture description here
1. Add data

test.json file content

{
    
    
  "code": 200,
  "data": {
    
    
    "name": "hezs",
    "age": 26
  }
}

2. Request.js encapsulates axios

import axios from 'axios'

var baseURL = 'http://localhost:8080'

const service = axios.create({
    
    
  baseURL: baseURL,
  timeout: 100000 // request timeout
})

service.interceptors.request.use(
  config => {
    
    

    return config
  },
  error => {
    
    
    // do something with request error
    console.log(error) // for debug
    return Promise.reject(error)
  }
)

// response interceptor
service.interceptors.response.use(

  response => {
    
    
    const res = response.data
    // console.log('resp:')
    // console.log(res)
    // if the custom code is not 200, it is judged as an error.
    if (res.code !== 200) {
    
    
      alert('!==200')
      return Promise.reject(res.message || 'error')
    } else {
    
    
      return res.data
    }
  },
  error => {
    
    
    console.log('err' + error) // for debug
    let msg = error.message
    console.log(msg);
    return Promise.reject(error)
  }
)

export default service

3. New api

import request from '@/utils/request'

export function testList(query) {
    
    
  return request({
    
    
    url: '/api/test',
    method: 'get',
    params: query
  })
}

4. Introduce configuration in vue.config.js

const test = require('./data/test.json')
const express = require('express')
const app = express()
let apiRoutes = express.Router()
app.use(`/api`, apiRoutes)


module.exports = {
    
    
  //生成环境部署路径,默认为'/'
  publicPath: './',
  //当运行 build 时生成的生产环境构建文件的目录
  outputDir:'demo',
  devServer: {
    
    
    proxy: {
    
    
      '/api': {
    
    
        target: 'http://localhost:8080',
        ws: true,
        changeOrigin: true,
        pathRewrite: {
    
    
          '^/api': ''
        }
      }
    },
    before(app) {
    
    
      app.get('/test', (req, res) => {
    
    
        res.json(test)
      })
    }
  }
}

Four, test interface

In the vue component

<template>
  <div class="hello">
   <div>
    <h1>测试接口数据</h1>
     <div>
       <span><b>name</b>: {
    
    {
    
    resData.name}}</span>
       <br>
       <span><b>age</b>: {
    
    {
    
    resData.age}}</span>
     </div>
   </div>
  </div>
</template>

<script>
import {
    
     testList } from '@/api/test'
export default {
    
    
  name: 'HelloWorld',
  data() {
    
    
    return{
    
    
      resData: {
    
    
        name: '',
        age: 0
      }
    }
  },
  mounted() {
    
    
    testList().then(res=>{
    
    
      console.log(res);
      this.resData = res
    }).catch(err=>{
    
    
      console.log(err);
    })
  },
  methods: {
    
    

  }
}
</script>

<style scoped>

</style>

Interface data return
Insert picture description here

av8d. it’s 666 !!!

Guess you like

Origin blog.csdn.net/super__code/article/details/109117794