最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 對接飛書多維表格使用詳解(微服務)

 更新時間:2024年12月02日 11:50:23   作者:逆風飛翔的小叔  
本文詳細介紹了如何基于飛書開放平臺在微服務項目中操作飛書多維表格,包括應用創(chuàng)建、授權、多維表數(shù)據(jù)操作(新增、查詢、刪除)以及Java SDK實現(xiàn)等步驟,感興趣的朋友跟隨小編一起看看吧

一、前言

飛書通過多維表格提供了強大的數(shù)據(jù)支撐能力,借助飛書開放平臺,應用程序可以通過飛書平臺提供的開放API能力操作多維表格,以滿足業(yè)務靈活的數(shù)據(jù)處理需要。本文將詳細介紹如何基于飛書開放平臺,在微服務項目中打通對飛書多維表的數(shù)據(jù)操作流程。

二、前置操作

2.1 開通企業(yè)飛書賬戶

默認情況下,你在公司的組織機構下,直接使用你的賬號激活并登錄的賬戶即可

2.2 確保賬戶具備多維表操作權限

由于后文會對一些多維表做數(shù)據(jù)測試,因此再正式開始之前,選擇你需要操作的多維表,并提前開通操作權限

2.3 創(chuàng)建一張測試用的多維表

在飛書的知識庫中創(chuàng)建一個測試用的多維數(shù)據(jù)表,如下,并提前初始化幾條數(shù)據(jù)

2.4 獲取飛書開放平臺文檔

百度搜索:飛書開放平臺,地址:https://open.feishu.cn/ ,通過 ” 開發(fā)文檔 ”進入

2.5 獲取Java SDK

在后文中,需要通過程序代碼操作多維表,因此需要在代碼中導入飛書開放平臺提供的SDK,官方給出了2種使用方式,通過SDK提供的API調用,或者通過傳統(tǒng)的HTTP方式調用,以Java語言為例進行說明,git對應的SDK獲取地址:SDK鏈接

三、應用App相關操作

應用程序對飛書提供的各類能力的操作,均以應用的維度為前提,所以在對接飛書API之前,需要結合實際業(yè)務需求進行應用的創(chuàng)建。

3.1 創(chuàng)建應用過程

操作入口:應用入口

如下,點擊創(chuàng)建應用

跳轉鏈接來到下面的頁面

按要求填寫應用的信息,然后點擊創(chuàng)建,創(chuàng)建成功后就可以在列表上看到剛剛創(chuàng)建的這個應用了

3.2 應用發(fā)布過程

應用必須要通過發(fā)布之后,應用具備的操作各類飛書文檔、多維表格的能力才能生效

點擊應用圖標,跳轉到下面的應用操作控制臺,在這個頁面,圖中兩個參數(shù)請妥善保管,后面在程序代碼中會多處使用。

點擊 ”版本管理與發(fā)布”

點擊創(chuàng)建版本,參照下面的格式要求填寫,提交之后需要等待飛書管理員審核通過。

3.3 應用添加操作權限

這里的操作權限,可以理解為,對上述添加的這個應用能夠做哪些事情,是操作多維表數(shù)據(jù)?修改/刪除文檔?還是獲取組織機構的人員?定一個具體的操作范圍。有點像你在阿里云控制臺,或者一些SAAS的操作平臺上面,根據(jù)自身的需求選擇一些平臺提供的各類操作能力。如下,在當前的應用頁面,點擊左側 ” 權限管理”

在右側可以看到,平臺主要提供了API權限和數(shù)據(jù)權限兩種類型,不同類型的權限下面細分了很多種小場景下的權限能力,可以根據(jù)自身的需求,為你當前創(chuàng)建的應用勾選對應的權限,比如后文需要操作多維表,所以我這里勾選了與多維表相關的權限。

四、多維表應用授權操作

在正式通過應用程序SDK操作飛書多維表之前,還需要在多維表為上述創(chuàng)建的這個應用授權,表示授權這個應用對這個多維表的操作權限,如下,找到多維表對接的流程:多維表對接流程

找到上文中創(chuàng)建的那個測試用的多維表,然后通過多維表上面的 ... 找到添加文檔應用

在彈出的搜索框中搜索前面創(chuàng)建并審核通過的那個應用名稱并添加即可(應用必須通過審核,否則這里無法搜索到),這一步操作成功后,就表示應用具備了操作當前這個多維表的能力了。

五、使用控制臺API調試操作多維表

飛書提供了控制臺在線調試各類API的能力,通過在線調試,不僅可以快速的看到結果,也可以基于調試的參數(shù)生成應用程序中可以真實使用的程序代碼,同時也可以在調試階段進一步理解API需要的參數(shù),以及參數(shù)的獲取方式,從而對API的使用有更深一層的理解,下面以操作多維表格為例進行說明。

5.1 控制臺調試多維表操作過程

5.1.1 獲取token

token是調用所有飛書API接口必須要用到的參數(shù),可以通過鏈接點擊查看:獲取token

點擊之后跳轉到下面的頁面

點擊開始調試按鈕,請求成功后,就能看到本次請求的tenant_access_token結果,如果需要user_access_token的話,點擊下面的獲取按鈕即可,需要注意的是,token的最大有效期是2小時;

5.1.2 獲取多維表數(shù)據(jù)

API地址  多維表API

每一個具體的API在調用之前,建議仔細閱讀一下API文檔的描述,比如調用這個API需要的詳細參數(shù),各個參數(shù)代表的含義,以及各個參數(shù)怎么獲取等,都有詳細的說明。

在這個查詢記錄的API中,需要傳遞3個參數(shù):

  • Authorization ,
    • 請求頭參數(shù),這里需要填token參數(shù),而token又分2種:
      • tenant_access_token , 租戶級token也可以理解為應用級token,權限和范圍最高;
      • user_access_token , 用戶token,API權限限定為當前操作的用戶;
  • app_token
    • 多維表格 App 的唯一標識,不同形態(tài)的多維表格,其 app_token 的獲取方式不同

按照上面參數(shù)的詳細解釋,以及獲取參數(shù)的方法,我們在右側的API調試控制臺輸入對應的參數(shù),點擊開始調試,可以看到成功獲取到多維表的數(shù)據(jù)。

如果調用過程中出現(xiàn)任何錯誤,在返回的響應中會輸出相關的信息

5.1.3 新增記錄

基于多維表增加數(shù)據(jù),增加記錄所需參數(shù)相對比較復雜一些,可以參考請求示例,結合請求參數(shù)的描述進行理解。

在右側調試控制臺,在請求體中按要求填寫如下參數(shù)

點擊調試,請求成功之后,可以看到下面的返回結果

調用成功之后,再在上面創(chuàng)建的測試多維表中可以看到增加了一條數(shù)據(jù)

5.1.4 刪除記錄

刪除多維數(shù)據(jù)表中的一行記錄

調用刪除接口,除了必須的那幾個公共參數(shù)之外,最核心的參數(shù)為 record_id ,可以理解為一張表的ID,以上一步新增接口返回的那條數(shù)據(jù) record_id為例進行調用測試。

刪除接口請求成功后,再看原始的多維表,可以看到上面這條數(shù)據(jù)被刪掉了

上面演示了在線調試多維表常用的幾種API操作步驟,更多的功能也可以參照這種方式進行操作即可

六、Java SDK操作多維表操作過程

接下來演示如何在代碼中集成飛書SDK操作多維表相關功能

6.1 導入相關依賴

在pom文件中導入http依賴,以及飛書SDK組件

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>2.0.35</version>
</dependency>
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.12.0</version>
</dependency>
<dependency>
    <groupId>com.larksuite.oapi</groupId>
    <artifactId>oapi-sdk</artifactId>
    <version>2.3.6</version>
</dependency>

6.2 操作多維表增刪改查相關功能

6.2.1 代碼集成小技巧

在上一小節(jié)通過控制臺調試API的時候,細心的伙伴可能會注意到在調試臺下面都有一個示例代碼的入口,類似下面這樣,為了減少代碼編寫成本,可以充分利用這里提供的示例代碼(前提:在代碼工程中導入SDK

6.2.2 獲取token

token是后面調用其他接口都需要的參數(shù),因此首先需要通過程序獲得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; charset=UTF-8");
        headers.setContentType(type);
        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
        Map<String,Object> paramMap = new HashMap<>();
        paramMap.put("app_id",appId);
        paramMap.put("app_secret",appSecret);
        String requestJson = JSONObject.toJSONString(paramMap);
        HttpEntity<String> entity = new HttpEntity<String>(requestJson,headers);
        String result = restTemplate.postForObject(url, entity, String.class);
        System.out.println(result);
    }
}

運行上面的代碼,從打印的結果中解析tenant_access_token即可(注意保存這個token,后面其他接口調用時會用到)

6.2.3 查詢多維表記錄

拷貝控制臺上面的示例代碼,然后調整示例代碼中的參數(shù)

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 第三步 : 獲取多維表的數(shù)據(jù),原始的URL:
 *   https://kxv0z438jth.feishu.cn/wiki/Sv8SwfjImiWFusk2MBEczz0AnNg?table=tblDPPkqY93he1AO&view=vewq1cS7NC
 */
public class TableDataGetTest {
    public static void main(String[] args) throws Exception{
        String appId = "你的appId ";
        String appSecret = "你的appSecret";
        // 構建client
        Client client = Client.newBuilder(appId, appSecret).build();
        // 創(chuàng)建請求對象
        SearchAppTableRecordReq req = SearchAppTableRecordReq.newBuilder()
                .appToken("JvJpbhm31a1s5xsqvOKcUTEMnrb")
                .tableId("tblDPPkqY93he1AO")
                .searchAppTableRecordReqBody(SearchAppTableRecordReqBody.newBuilder()
                        .viewId("vewq1cS7NC")
                        .fieldNames(new String[] {
                                "名稱",
                                "單號"
                        })
                        .build())
                .build();
        // 發(fā)起請求
        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;
        }
        // 業(yè)務數(shù)據(jù)處理
        System.out.println(Jsons.DEFAULT.toJson(resp.getData()));
        SearchAppTableRecordRespBody data = resp.getData();
        AppTableRecord[] items = data.getItems();
        for (AppTableRecord item : items) {
            Map<String, Object> fields = item.getFields();
            fields.forEach((key,val)->{
                System.out.println("key:" + key);
                List<Map<String,Object>> fieldList = (List<Map<String,Object>>)val;
                System.out.println("fieldList:" + fieldList);
            });
        }
    }
}

這里需要重點說明一下 appToken 和 tableId 這兩個參數(shù):

  • appToken:
    • 這里操作的多維表的URL鏈接中含有wiki,需要通過調用另一個 “獲取知識空間節(jié)點信息“的接口返回的參數(shù)中獲?。?/li>
    • 點擊“獲取知識空間節(jié)點信息“超鏈接,跳轉到另一個調試控制臺進行獲取;
    • 按照參數(shù)說明,這里需要獲取接口返回值中的 obj_token 作為本次獲取記錄接口中的app_token參數(shù)使用;

將這個obj_token 值代入到代碼的參數(shù)中調用一下,記錄能夠全部查詢出來

6.2.4 獲取知識空間節(jié)點信息

在上一步的接口調用中,需要傳入一個app_token的參數(shù),這個參數(shù)需要調用另一個接口中獲取到,即:獲取知識空間節(jié)點信息,參數(shù)中的token值來源:

完整代碼如下(可拷貝官方提供的示例代碼做簡單參數(shù)調整

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 : 第二步 ,獲取文檔節(jié)點的信息,真正在讀取文檔的數(shù)據(jù)記錄的時候需要拿到節(jié)點的信息
 */
public class SpaceTokenGetTest {
    public static void main(String[] args) throws Exception{
        String appId = "你的appId ";
        String appSecret = "你的appSecret";
        // 構建client
        Client client = Client.newBuilder(appId, appSecret).build();
        // 創(chuàng)建請求對象
        GetNodeSpaceReq req = GetNodeSpaceReq.newBuilder()
                .token("Sv8SwfjImiWFusk2MBEczz0AnNg")
                .objType("wiki")
                .build();
        // 發(fā)起請求
        GetNodeSpaceResp resp = client.wiki().space().getNode(req);
        GetNodeSpaceRespBody data = resp.getData();
        if(!resp.success()){
            System.out.println("請求獲取文檔節(jié)點接口失敗");
        }
        Node node = data.getNode();
        if(Objects.isNull(data) || Objects.isNull(node)){
            System.out.println("請求的數(shù)據(jù)為空");
        }
        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("當前操作的是多維表格,對應的節(jié)點token:" + nodeToken);
            System.out.println("當前操作的是多維表格,作為獲取多維表格的查詢 app_token:" + objToken);
        }
    }
}

運行一下程序,可以看到成功獲取到響應結果

6.2.5 新增記錄

完整代碼如下,注意:

appToken,即上一步獲取知識庫空間節(jié)點信息返回的 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 第四步 : 新增數(shù)據(jù)到多維表,原始的URL:
 *   https://kxv0z438jth.feishu.cn/wiki/Sv8SwfjImiWFusk2MBEczz0AnNg?table=tblDPPkqY93he1AO&view=vewq1cS7NC
 */
public class TableDataInsertTest {
    public static void main(String[] args) throws Exception {
        String appId = "你的appId";
        String appSecret = "你的appSecret ";
        // 構建client
        Client client = Client.newBuilder(appId, appSecret).build();
        // 創(chuàng)建請求對象
        CreateAppTableRecordReq req = CreateAppTableRecordReq.newBuilder()
                .appToken("JvJpbhm31a1s5xsqvOKcUTEMnrb")
                .tableId("tblDPPkqY93he1AO")
                .appTableRecord(AppTableRecord.newBuilder()
                        .fields(new HashMap <String, Object > () {
                            {
                                put("名稱", "wiliam");
                                put("單號", "SX009");
                            }
                        })
                        .build())
                .build();
        // 發(fā)起請求
        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;
        }
        // 業(yè)務數(shù)據(jù)處理
        System.out.println(Jsons.DEFAULT.toJson(resp.getData()));
    }
}

運行一下代碼,返回的結果和控制臺上面相同

然后再在多維表中可以看到多了一條數(shù)據(jù)

6.2.6 刪除記錄

完整代碼如下,注意:

  • appToken,即上一步獲取知識庫空間節(jié)點信息返回的 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 第四步 : 刪除多維表數(shù)據(jù),原始的URL:
 *   https://kxv0z438jth.feishu.cn/wiki/Sv8SwfjImiWFusk2MBEczz0AnNg?table=tblDPPkqY93he1AO&view=vewq1cS7NC
 */
public class DeleteTableDataTest {
    public static void main(String[] args) throws Exception {
        String appId = "你的appId ";
        String appSecret = "你的appSecret";
        // 構建client
        Client client = Client.newBuilder(appId, appSecret).build();
        // 創(chuàng)建請求對象
        DeleteAppTableRecordReq req = DeleteAppTableRecordReq.newBuilder()
                .appToken("你的appToken")
                .tableId("你的tableId")
                .recordId("你的recordId")
                .build();
        // 發(fā)起請求
        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;
        }
        // 業(yè)務數(shù)據(jù)處理
        System.out.println(Jsons.DEFAULT.toJson(resp.getData()));
    }
}

運行上面的代碼,可以看到記錄刪除成功

刪除成功后可以看到多維表中上面這條記錄被刪除了

七、寫在文末

本文通過實際操作過程詳細介紹了如何對接飛書的多維表,希望對看到的同學有用哦,本篇到此結束,感謝觀看。

到此這篇關于Java 對接飛書多維表格使用詳解的文章就介紹到這了,更多相關Java 飛書多維表格內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Springboot打包成jar發(fā)布的操作方法

    Springboot打包成jar發(fā)布的操作方法

    打包的方式有打包成jar包或者打包成war包發(fā)布,區(qū)別在于jar包內置了tomcat、netty等服務器,更改只需要修改pom.xml的坐標即可,war不內置服務器,需要上傳到服務器tomcat解壓后運行,本文分析Springboot打包成jar發(fā)布,感興趣的朋友一起看看吧
    2023-02-02
  • 淺析如何將多個SpringBoot項目打包到一個Docker容器中

    淺析如何將多個SpringBoot項目打包到一個Docker容器中

    在現(xiàn)代軟件開發(fā)中,Docker已成為一種流行的容器化技術,能夠簡化應用的部署和管理,本文將詳細介紹如何將多個Spring Boot項目打包到一個Docker容器中,希望對大家有所幫助
    2024-10-10
  • Java語言描述二叉樹的深度和寬度

    Java語言描述二叉樹的深度和寬度

    這篇文章主要介紹了Java語言描述二叉樹的深度和寬度,具有一定借鑒價值,需要的朋友可以參考下。
    2017-11-11
  • 詳解在Java中如何創(chuàng)建多線程程序

    詳解在Java中如何創(chuàng)建多線程程序

    今天給大家?guī)淼氖顷P于Java的相關知識,文章圍繞著在Java中如何創(chuàng)建多線程程序展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Spring?Boot集成JasperReport生成文檔的方法

    Spring?Boot集成JasperReport生成文檔的方法

    由于工作需要,要實現(xiàn)后端根據(jù)模板動態(tài)填充數(shù)據(jù)生成PDF文檔,通過技術選型,使用Ireport5.6來設計模板,結合JasperReports5.6工具庫來調用渲染生成PDF文檔,這篇文章主要介紹了Spring?Boot集成JasperReport生成文檔,需要的朋友可以參考下
    2023-09-09
  • IDEA Ultimate2020.2版本配置Tomcat詳細教程

    IDEA Ultimate2020.2版本配置Tomcat詳細教程

    這篇文章主要介紹了IDEA Ultimate2020.2版本配置Tomcat教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • springBoot 插件工具熱部署 Devtools的步驟詳解

    springBoot 插件工具熱部署 Devtools的步驟詳解

    這篇文章主要介紹了springBoot 插件工具 熱部署 Devtools,本文分步驟給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Springboot Thymeleaf模板文件調用Java類靜態(tài)方法

    Springboot Thymeleaf模板文件調用Java類靜態(tài)方法

    這篇文章主要介紹了Springboot Thymeleaf模板文件調用Java類靜態(tài)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2007-09-09
  • 教你如何用Eclipse創(chuàng)建一個Maven項目

    教你如何用Eclipse創(chuàng)建一個Maven項目

    這篇文章主要介紹了教你如何用Eclipse創(chuàng)建一個Maven項目,文中有非常詳細的代碼示例,對正在入門Java的小伙伴們是非常有幫助的喲,需要的朋友可以參考下
    2021-05-05
  • Spring?Cloud?Gateway?整合?knife4j?聚合接口文檔功能

    Spring?Cloud?Gateway?整合?knife4j?聚合接口文檔功能

    這篇文章主要介紹了Spring?Cloud?Gateway?整合?knife4j?聚合接口文檔的相關知識,我們可以基于?Spring?Cloud?Gateway?網關?+?nacos?+?knife4j?對所有微服務項目的接口文檔進行聚合,從而實現(xiàn)我們想要的文檔管理功能,需要的朋友可以參考下
    2022-02-02

最新評論

沁水县| 徐闻县| 顺平县| 乐山市| 西乌珠穆沁旗| 镇康县| 托克托县| 巨野县| 海盐县| 邵阳市| 县级市| 涞源县| 云龙县| 博白县| 闽清县| 舟山市| 抚顺市| 静宁县| 和硕县| 天水市| 宜兰县| 吴旗县| 岐山县| 尼玛县| 新化县| 江西省| 肇东市| 扎赉特旗| 喀喇| 阳江市| 舒兰市| 浑源县| 鹤庆县| 集贤县| 曲水县| 东台市| 玉溪市| 栖霞市| 青河县| 万州区| 灵武市|