校园微网站建设方案ppt模板下载,嵌入式开发培训多少钱,视觉差网站插件,郑州最好的妇科医院排行目录 一、前言
二、前置操作
2.1 开通企业飞书账户
2.2 确保账户具备多维表操作权限
2.3 创建一张测试用的多维表
2.4 获取飞书开放平台文档
2.5 获取Java SDK
三、应用App相关操作
3.1 创建应用过程
3.2 应用发布过程
3.3 应用添加操作权限
四、多维表应用授权操作…目录 一、前言
二、前置操作
2.1 开通企业飞书账户
2.2 确保账户具备多维表操作权限
2.3 创建一张测试用的多维表
2.4 获取飞书开放平台文档
2.5 获取Java SDK
三、应用App相关操作
3.1 创建应用过程
3.2 应用发布过程
3.3 应用添加操作权限
四、多维表应用授权操作
五、使用控制台API调试操作多维表
5.1 控制台调试多维表操作过程
5.1.1 获取token
5.1.2 获取多维表数据
5.1.3 新增记录
5.1.4 删除记录
六、Java SDK操作多维表操作过程
6.1 导入相关依赖
6.2 操作多维表增删改查相关功能
6.2.1 代码集成小技巧
6.2.2 获取token
6.2.3 查询多维表记录
6.2.4 获取知识空间节点信息
6.2.5 新增记录
6.2.6 删除记录
七、写在文末 一、前言
飞书通过多维表格提供了强大的数据支撑能力借助飞书开放平台应用程序可以通过飞书平台提供的开放API能力操作多维表格以满足业务灵活的数据处理需要。本文将详细介绍如何基于飞书开放平台在微服务项目中打通对飞书多维表的数据操作流程。 二、前置操作 2.1 开通企业飞书账户
默认情况下你在公司的组织机构下直接使用你的账号激活并登录的账户即可 2.2 确保账户具备多维表操作权限
由于后文会对一些多维表做数据测试因此再正式开始之前选择你需要操作的多维表并提前开通操作权限 2.3 创建一张测试用的多维表
在飞书的知识库中创建一个测试用的多维数据表如下并提前初始化几条数据 2.4 获取飞书开放平台文档
百度搜索飞书开放平台地址https://open.feishu.cn/ 通过 ” 开发文档 ”进入 2.5 获取Java SDK
在后文中需要通过程序代码操作多维表因此需要在代码中导入飞书开放平台提供的SDK官方给出了2种使用方式通过SDK提供的API调用或者通过传统的HTTP方式调用以Java语言为例进行说明git对应的SDK获取地址SDK链接 三、应用App相关操作
应用程序对飞书提供的各类能力的操作均以应用的维度为前提所以在对接飞书API之前需要结合实际业务需求进行应用的创建。 3.1 创建应用过程
操作入口应用入口 如下点击创建应用 跳转链接来到下面的页面 按要求填写应用的信息然后点击创建创建成功后就可以在列表上看到刚刚创建的这个应用了 3.2 应用发布过程
应用必须要通过发布之后应用具备的操作各类飞书文档、多维表格的能力才能生效 点击应用图标跳转到下面的应用操作控制台在这个页面图中两个参数请妥善保管后面在程序代码中会多处使用。 点击 ”版本管理与发布” 点击创建版本参照下面的格式要求填写提交之后需要等待飞书管理员审核通过。 3.3 应用添加操作权限
这里的操作权限可以理解为对上述添加的这个应用能够做哪些事情是操作多维表数据修改/删除文档还是获取组织机构的人员定一个具体的操作范围。有点像你在阿里云控制台或者一些SAAS的操作平台上面根据自身的需求选择一些平台提供的各类操作能力。如下在当前的应用页面点击左侧 ” 权限管理” 在右侧可以看到平台主要提供了API权限和数据权限两种类型不同类型的权限下面细分了很多种小场景下的权限能力可以根据自身的需求为你当前创建的应用勾选对应的权限比如后文需要操作多维表所以我这里勾选了与多维表相关的权限。 四、多维表应用授权操作
在正式通过应用程序SDK操作飞书多维表之前还需要在多维表为上述创建的这个应用授权表示授权这个应用对这个多维表的操作权限如下找到多维表对接的流程多维表对接流程 找到上文中创建的那个测试用的多维表然后通过多维表上面的 ... 找到添加文档应用 在弹出的搜索框中搜索前面创建并审核通过的那个应用名称并添加即可应用必须通过审核否则这里无法搜索到这一步操作成功后就表示应用具备了操作当前这个多维表的能力了。 五、使用控制台API调试操作多维表
飞书提供了控制台在线调试各类API的能力通过在线调试不仅可以快速的看到结果也可以基于调试的参数生成应用程序中可以真实使用的程序代码同时也可以在调试阶段进一步理解API需要的参数以及参数的获取方式从而对API的使用有更深一层的理解下面以操作多维表格为例进行说明。 5.1 控制台调试多维表操作过程 5.1.1 获取token
token是调用所有飞书API接口必须要用到的参数可以通过链接点击查看获取token 点击之后跳转到下面的页面 点击开始调试按钮请求成功后就能看到本次请求的tenant_access_token结果如果需要user_access_token的话点击下面的获取按钮即可需要注意的是token的最大有效期是2小时 5.1.2 获取多维表数据
API地址 多维表API 每一个具体的API在调用之前建议仔细阅读一下API文档的描述比如调用这个API需要的详细参数各个参数代表的含义以及各个参数怎么获取等都有详细的说明。 在这个查询记录的API中需要传递3个参数 Authorization 请求头参数这里需要填token参数而token又分2种 tenant_access_token 租户级token也可以理解为应用级token权限和范围最高 user_access_token 用户tokenAPI权限限定为当前操作的用户 app_token 多维表格 App 的唯一标识不同形态的多维表格其 app_token 的获取方式不同 按照上面参数的详细解释以及获取参数的方法我们在右侧的API调试控制台输入对应的参数点击开始调试可以看到成功获取到多维表的数据。 如果调用过程中出现任何错误在返回的响应中会输出相关的信息 5.1.3 新增记录
基于多维表增加数据增加记录所需参数相对比较复杂一些可以参考请求示例结合请求参数的描述进行理解。 在右侧调试控制台在请求体中按要求填写如下参数 点击调试请求成功之后可以看到下面的返回结果 调用成功之后再在上面创建的测试多维表中可以看到增加了一条数据 5.1.4 删除记录
删除多维数据表中的一行记录 调用删除接口除了必须的那几个公共参数之外最核心的参数为 record_id 可以理解为一张表的ID以上一步新增接口返回的那条数据 record_id为例进行调用测试。 删除接口请求成功后再看原始的多维表可以看到上面这条数据被删掉了 上面演示了在线调试多维表常用的几种API操作步骤更多的功能也可以参照这种方式进行操作即可 六、Java SDK操作多维表操作过程
接下来演示如何在代码中集成飞书SDK操作多维表相关功能 6.1 导入相关依赖
在pom文件中导入http依赖以及飞书SDK组件
dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion2.0.35/version
/dependencydependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokhttp/artifactIdversion4.12.0/version
/dependencydependencygroupIdcom.larksuite.oapi/groupIdartifactIdoapi-sdk/artifactIdversion2.3.6/version
/dependency 6.2 操作多维表增删改查相关功能 6.2.1 代码集成小技巧
在上一小节通过控制台调试API的时候细心的伙伴可能会注意到在调试台下面都有一个示例代码的入口类似下面这样为了减少代码编写成本可以充分利用这里提供的示例代码前提在代码工程中导入SDK 6.2.2 获取token
token是后面调用其他接口都需要的参数因此首先需要通过程序获得token完整代码如下
import com.alibaba.fastjson.JSONObject;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.web.client.RestTemplate;import java.util.HashMap;
import java.util.Map;/*** 获取自建应用的 tenant_access_token*/
public class TenantAuthTokenTest {public static void main(String[] args) {String appId 替换为你自己应用的appId;String appSecret 替换为你自己应用的appSecret;RestTemplate restTemplate new RestTemplate();String url https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal;HttpHeaders headers new HttpHeaders();MediaType type MediaType.parseMediaType(application/json; charsetUTF-8);headers.setContentType(type);headers.add(Accept, MediaType.APPLICATION_JSON.toString());MapString,Object paramMap new HashMap();paramMap.put(app_id,appId);paramMap.put(app_secret,appSecret);String requestJson JSONObject.toJSONString(paramMap);HttpEntityString entity new HttpEntityString(requestJson,headers);String result restTemplate.postForObject(url, entity, String.class);System.out.println(result);}}
运行上面的代码从打印的结果中解析tenant_access_token即可注意保存这个token后面其他接口调用时会用到 6.2.3 查询多维表记录
拷贝控制台上面的示例代码然后调整示例代码中的参数
package com.congge.feishu;import com.lark.oapi.Client;
import com.lark.oapi.core.utils.Jsons;
import com.lark.oapi.service.bitable.v1.model.*;import java.util.List;
import java.util.Map;/*** TODO 第三步 获取多维表的数据原始的URL* https://kxv0z438jth.feishu.cn/wiki/Sv8SwfjImiWFusk2MBEczz0AnNg?tabletblDPPkqY93he1AOviewvewq1cS7NC*/
public class TableDataGetTest {public static void main(String[] args) throws Exception{String appId 你的appId ;String appSecret 你的appSecret;// 构建clientClient client Client.newBuilder(appId, appSecret).build();// 创建请求对象SearchAppTableRecordReq req SearchAppTableRecordReq.newBuilder().appToken(JvJpbhm31a1s5xsqvOKcUTEMnrb).tableId(tblDPPkqY93he1AO).searchAppTableRecordReqBody(SearchAppTableRecordReqBody.newBuilder().viewId(vewq1cS7NC).fieldNames(new String[] {名称,单号}).build()).build();// 发起请求SearchAppTableRecordResp resp client.bitable().appTableRecord().search(req);// 处理服务端错误if(!resp.success()) {System.out.println(String.format(code:%s,msg:%s,reqId:%s, resp:%s, resp.getCode(), resp.getMsg(), resp.getRequestId(), Jsons.DEFAULT.toJson(resp.getRawResponse())));return;}// 业务数据处理System.out.println(Jsons.DEFAULT.toJson(resp.getData()));SearchAppTableRecordRespBody data resp.getData();AppTableRecord[] items data.getItems();for (AppTableRecord item : items) {MapString, Object fields item.getFields();fields.forEach((key,val)-{System.out.println(key: key);ListMapString,Object fieldList (ListMapString,Object)val;System.out.println(fieldList: fieldList);});}}} 这里需要重点说明一下 appToken 和 tableId 这两个参数 appToken 这里操作的多维表的URL链接中含有wiki需要通过调用另一个 “获取知识空间节点信息“的接口返回的参数中获取 点击“获取知识空间节点信息“超链接跳转到另一个调试控制台进行获取 按照参数说明这里需要获取接口返回值中的 obj_token 作为本次获取记录接口中的app_token参数使用 将这个obj_token 值代入到代码的参数中调用一下记录能够全部查询出来 6.2.4 获取知识空间节点信息
在上一步的接口调用中需要传入一个app_token的参数这个参数需要调用另一个接口中获取到即获取知识空间节点信息参数中的token值来源 完整代码如下可拷贝官方提供的示例代码做简单参数调整
package com.congge.feishu;import com.fasterxml.jackson.databind.ObjectMapper;
import com.lark.oapi.Client;
import com.lark.oapi.service.wiki.v2.model.GetNodeSpaceReq;
import com.lark.oapi.service.wiki.v2.model.GetNodeSpaceResp;
import com.lark.oapi.service.wiki.v2.model.GetNodeSpaceRespBody;
import com.lark.oapi.service.wiki.v2.model.Node;import java.util.Objects;/*** TODO 第二步 获取文档节点的信息真正在读取文档的数据记录的时候需要拿到节点的信息*/
public class SpaceTokenGetTest {public static void main(String[] args) throws Exception{String appId 你的appId ;String appSecret 你的appSecret;// 构建clientClient client Client.newBuilder(appId, appSecret).build();// 创建请求对象GetNodeSpaceReq req GetNodeSpaceReq.newBuilder().token(Sv8SwfjImiWFusk2MBEczz0AnNg).objType(wiki).build();// 发起请求GetNodeSpaceResp resp client.wiki().space().getNode(req);GetNodeSpaceRespBody data resp.getData();if(!resp.success()){System.out.println(请求获取文档节点接口失败);}Node node data.getNode();if(Objects.isNull(data) || Objects.isNull(node)){System.out.println(请求的数据为空);}String spaceId node.getSpaceId();String nodeToken node.getNodeToken();String objType node.getObjType();String objToken node.getObjToken();String title node.getTitle();if(bitable.equals(objType)){System.out.println(当前操作的是多维表格表格名称 title);System.out.println(当前操作的是多维表格对应的节点token nodeToken);System.out.println(当前操作的是多维表格作为获取多维表格的查询 app_token objToken);}}}
运行一下程序可以看到成功获取到响应结果 6.2.5 新增记录
完整代码如下注意 appToken即上一步获取知识库空间节点信息返回的 app_token
package com.congge.feishu;import com.lark.oapi.Client;
import com.lark.oapi.core.utils.Jsons;
import com.lark.oapi.service.bitable.v1.model.*;
import java.util.HashMap;
import com.lark.oapi.core.request.RequestOptions;/*** TODO 第四步 新增数据到多维表原始的URL* https://kxv0z438jth.feishu.cn/wiki/Sv8SwfjImiWFusk2MBEczz0AnNg?tabletblDPPkqY93he1AOviewvewq1cS7NC*/
public class TableDataInsertTest {public static void main(String[] args) throws Exception {String appId 你的appId;String appSecret 你的appSecret ;// 构建clientClient client Client.newBuilder(appId, appSecret).build();// 创建请求对象CreateAppTableRecordReq req CreateAppTableRecordReq.newBuilder().appToken(JvJpbhm31a1s5xsqvOKcUTEMnrb).tableId(tblDPPkqY93he1AO).appTableRecord(AppTableRecord.newBuilder().fields(new HashMap String, Object () {{put(名称, wiliam);put(单号, SX009);}}).build()).build();// 发起请求CreateAppTableRecordResp resp client.bitable().appTableRecord().create(req);// 处理服务端错误if(!resp.success()) {System.out.println(String.format(code:%s,msg:%s,reqId:%s, resp:%s, resp.getCode(), resp.getMsg(), resp.getRequestId(), Jsons.DEFAULT.toJson(resp.getRawResponse())));return;}// 业务数据处理System.out.println(Jsons.DEFAULT.toJson(resp.getData()));}}
运行一下代码返回的结果和控制台上面相同 然后再在多维表中可以看到多了一条数据 6.2.6 删除记录
完整代码如下注意 appToken即上一步获取知识库空间节点信息返回的 app_token recordId 可以使用上一步新增的那条记录返回的recordId
package com.congge.feishu;import com.lark.oapi.Client;
import com.lark.oapi.core.utils.Jsons;
import com.lark.oapi.service.bitable.v1.model.*;
import java.util.HashMap;
import com.lark.oapi.core.request.RequestOptions;/*** TODO 第四步 删除多维表数据原始的URL* https://kxv0z438jth.feishu.cn/wiki/Sv8SwfjImiWFusk2MBEczz0AnNg?tabletblDPPkqY93he1AOviewvewq1cS7NC*/
public class DeleteTableDataTest {public static void main(String[] args) throws Exception {String appId 你的appId ;String appSecret 你的appSecret;// 构建clientClient client Client.newBuilder(appId, appSecret).build();// 创建请求对象DeleteAppTableRecordReq req DeleteAppTableRecordReq.newBuilder().appToken(你的appToken).tableId(你的tableId).recordId(你的recordId).build();// 发起请求DeleteAppTableRecordResp resp client.bitable().appTableRecord().delete(req);// 处理服务端错误if(!resp.success()) {System.out.println(String.format(code:%s,msg:%s,reqId:%s, resp:%s, resp.getCode(), resp.getMsg(), resp.getRequestId(), Jsons.DEFAULT.toJson(resp.getRawResponse())));return;}// 业务数据处理System.out.println(Jsons.DEFAULT.toJson(resp.getData()));}
}
运行上面的代码可以看到记录删除成功 删除成功后可以看到多维表中上面这条记录被删除了 七、写在文末
本文通过实际操作过程详细介绍了如何对接飞书的多维表希望对看到的同学有用哦本篇到此结束感谢观看。