定义API及使用HTTP服务


这里的API定义指在/service/api/目录中创建js文件来定义业务中的API模型接口.这里的API将会在业务层中调用. 我们应该遵循以下实践规则:

  • API的文件定义与API文档中的模块保持一致,这样的好处是无论是在类似yAPI中查阅调试API时或者查阅API文档时,代码中的API结构始终是和其他部分完全一样.
  • API的文件名称应与API文档中定义的模块保持一致.
  • API的书写应保持在同一项目中保持统一

[info] 关于RESTful

如果你的项目使用了REST规范,则请在定义API时遵循其定义规则.

API模型示例


export const platformApi = {
  menu: [
    {
      name: 'list',
      method: 'POST',
      path: '/menu/list',
      mockPath: '/menu/list',
      params: {
        role: []
      },
      desc: '获取菜单列表'
    },
    {
      name: 'heatmapstart',
      method: 'POST',
      path: '/temp/heatmap-start',
      mockPath: '/temp/heatmap-start',
      params: {},
      desc: '热力图'
    },
  ]
}

Vue组件中使用

接着, 我们可以在所有Vue组件中使用以下方式进行调用:

/**
 * 调用一个API接口
 **/
this.$api['menu.list'](params).then(res => { })

非Vue组件中使用

如果在非Vue组件中希望调用接口. 则需要先引入API服务

import api from '@/plugins/api'

api['menu.list']({userRoles: roles}).then(res=>{ })

使用原生axios组件

如果需要使用原生axios服务, 那么目前只可以在Vue组件中通过以下方式访问,这里直接将axios挂载到了 Vue原型对象上, 因此上下二者使用无任何区别.具体使用方式,请参考axios文档.

// Vue组件中调用框架方法
this.$ajax()

// 调用原生方法
import axios from './axios'
axios.request()
axios.get()
axios.post()
...

results matching ""

    No results matching ""