# 快速上手 - 开发首个云对象接口并和前端进行交互

首先建议导入下VK框架快速开发辅助工具,Ta能方便你很多

传送门 - VK框架快速开发辅助工具 (opens new window)

注意:后端目前分:云函数和云对象,两者都是后端,区别是云函数是1个文件写1个接口,云对象是1个文件写N个接口。

本示例以云对象作为后端介绍整个流程,当你学会了云对象后,云函数也能轻松使用(两者其实差不多)

# 新建首个自己的云对象

云对象必须写在service目录下,即这个目录下面。

service目录下面有几个基本目录,如下图介绍

现在我们新建一个客户端的接口,即需要写在 client 目录下。

  • 1、在 client 目录右键,依次点击vk - 新建云对象 - 输入 pub.user 即可创建1个云对象。

如果不以pub. 开头,则这个云对象内的接口前端需要先登录才能访问,加了pub. 则未登录也能直接访问里面的接口。

传送门 - 云对象内置权限说明 (opens new window)

在刚创建的 pub.user 云对象内可以看到有几个内置方法,其中 _before 是请求前处理的过滤器,_after 是请求后处理的过滤器,而下面的 getListtest 都是对外的接口

  • 2、新建1个接口,名为calc

这里演示简易加法计算接口,不涉及数据库(一般接口都会涉及到数据库,这里只是演示怎么写接口,同时给前端怎么调用)

/**
 * 演示加法计算接口
 * @url client/pub.user.calc 前端调用的url参数地址
 */
calc: async function(data) {
  let res = { code: 0, msg: '' };
  // 业务逻辑开始-----------------------------------------------------------
  let {
    x,
    y
  } = data;
  if (vk.pubfn.isNull(x)) return { code:-1, msg:"x不能为空" };
  if (vk.pubfn.isNull(y)) return { code:-1, msg:"y不能为空" };
  
  res.z = x + y;

  // 业务逻辑结束-----------------------------------------------------------
  return res;
},
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 前端调用云对象内的接口

  • 3、写完后,保存,然后选中calc接口名,右键,vk - 复制前端调用代码

  • 4、去前端页面的方法里,复制即可。

<template>
  <view class="content">
    <button @click="test()">请求云对象的方法</button>
  </view>
</template>

<script>
  export default {
    data() {
      return {
        
      }
    },
    methods: {
      test() { 
        vk.callFunction({
          url: 'client/pub.user.calc',
          title: '请求中...',
          data: {
            x: 1,
            y: 2
          },
          success: (data) => {
            vk.alert(`云端返回的计算结果是:${data.z}`); // 结果是3
          }
        });
      }
    }
  }
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  • 5、这样前端和云端的调用就完成了

tips

云对象还有一种特殊的方式调用云端接口,即通过 uni.vk.importObject 先引入云对象,然后可以直接调用云对象内的方法。

<template>
  <view class="content">
    <button @click="test()">请求云对象的方法</button>
  </view>
</template>

<script>
  export default {
    data() {
      return {
        
      }
    },
    methods: {
      async test() { // 注意异步
        // 导入云对象
        const userObject = uni.vk.importObject("client/pub.user"); // 这段代码可以写在外层顶部,也可以直接写在对应函数内部。
        try {
          // 导入云对象后就可以直接调用该对象的calc方法了,注意使用异步await
          let res = await userObject.calc({
            title: '请求中...',
            data: {
              x: 1,
              y: 2
            }
          });
          vk.alert(`云端返回的计算结果是:${data.z}`); // 结果是3
        } catch (e) {
          console.log(e)
        }
      }
    }
  }
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

总结

跟之前传统开发其实差不多,思路是一样的。

以java为例

相当于你之前是先写 java接口,然后 uniapp前端uni.request 请求 java接口

而现在是,先写 云函数或云对象接口,然后 uniapp前端vk.callFunction 请求 云函数或云对象 即可。

道理是一样的,无非就是从 java语言 变成了 node.js语言,而 node.js 基本上跟前端的js(javascript) 是一样的语法,因此前后端就是统一的 js语言,学习成本大大降低。开发效率大大提升。

# 新手必看文档

传送门 - 云对象介绍 (opens new window)

传送门 - JS API文档大全 (opens new window)

传送门 - vk.userCenter 用户中心 API (opens new window)

传送门 - 数据库操作 API (opens new window)

传送门 - 数据库操作 常见问题 (opens new window)

传送门 - uni-id配置 (opens new window)

# 进阶文档

建议看完【新手必看文档】并会用后,在看进阶文档

传送门 - vuex的使用 (opens new window)

传送门 - 数据库万能连表 (opens new window)

传送门 - 数据库事务 (opens new window)

传送门 - 全局云端数据缓存 (opens new window)

传送门 - 全局中间件 (opens new window)

传送门 - 云函数定时任务 (opens new window)

传送门 - 云函数url化给外部系统提供http接口 (opens new window)

当你开发过程中碰到一些问题时,可以先在文档上搜索,如果没有找到答案,再在群里提问。

如我小程序开发时好好的,为什么正式版就无法连接云函数了?

则在文档搜几个关键词,如小程序就是关键词,或者搜正式版

一下就搜到答案了