本發(fā)明涉及計(jì)算機(jī),特別是涉及一種基于樹(shù)結(jié)構(gòu)的api差異比對(duì)方法、裝置、設(shè)備和介質(zhì)。
背景技術(shù):
1、在軟件系統(tǒng)的開(kāi)發(fā)和維護(hù)過(guò)程中,由于api的不斷演進(jìn)和變更,如何有效地對(duì)比和分析api之間的差異,已經(jīng)成為一個(gè)重要的問(wèn)題。目前api差異比對(duì)的需求主要體現(xiàn)在:1.版本控制:隨著軟件版本的升級(jí),不同版本的api可能會(huì)發(fā)生變化,需要一種方法來(lái)對(duì)比不同版本之間的api差異。2.兼容性檢測(cè):在集成多個(gè)系統(tǒng)時(shí),必須確保新版本的api與舊版本的api兼容,差異比對(duì)有助于發(fā)現(xiàn)不兼容的地方。3.變更影響分析:當(dāng)api發(fā)生變更時(shí),需要分析這些變更可能帶來(lái)的影響,如對(duì)前端頁(yè)面、api用例、上游系統(tǒng)調(diào)用是否帶來(lái)影響。針對(duì)api的差異比對(duì),目前常用的方法包括:1.文本比對(duì):利用文本比對(duì)工具(如diff)對(duì)api文檔進(jìn)行逐行對(duì)比。這種方法簡(jiǎn)單直接,但只適用于小規(guī)模和簡(jiǎn)單的api文檔。當(dāng)api文檔內(nèi)容龐大且結(jié)構(gòu)復(fù)雜時(shí),文本比對(duì)的方法顯得力不從心,難以直觀地反映api結(jié)構(gòu)的變化。2.工具化比對(duì):利用專(zhuān)門(mén)的api比對(duì)工具(如swagger?diff、openapidiff)對(duì)api的定義文件(如swagger、openapi)進(jìn)行比對(duì)。這種方法能夠自動(dòng)化地進(jìn)行api差異比對(duì),效率較高,但受限于工具的功能和api描述文件的格式。
2、可見(jiàn),現(xiàn)有方案在功能上存在一定的局限性,無(wú)法處理復(fù)雜的api結(jié)構(gòu),并且對(duì)于大規(guī)模的api文檔,比對(duì)過(guò)程繁瑣且耗時(shí),無(wú)法滿(mǎn)足使用需求。
3、針對(duì)上述問(wèn)題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)思路
1、基于此,有必要針對(duì)上述技術(shù)問(wèn)題,提供一種基于樹(shù)結(jié)構(gòu)的api差異比對(duì)方法、裝置、設(shè)備和介質(zhì)。本發(fā)明支持復(fù)雜api結(jié)構(gòu)的參數(shù)及屬性的差異比對(duì),在樹(shù)結(jié)構(gòu)上直觀展示api的差異,為api變更影響分析提供清晰的依據(jù)。
2、根據(jù)本發(fā)明的第一方面,提供了一種基于樹(shù)結(jié)構(gòu)的api差異對(duì)比方法,包括:
3、api獲取步驟,獲取需要對(duì)比的api;
4、轉(zhuǎn)換步驟,將api文檔轉(zhuǎn)換為樹(shù)結(jié)構(gòu);
5、對(duì)比步驟,將需要對(duì)比的api通過(guò)所述樹(shù)結(jié)構(gòu)進(jìn)行對(duì)比;
6、記錄步驟,根據(jù)對(duì)比結(jié)果記錄參數(shù)的差異信息,以及每個(gè)參數(shù)在樹(shù)節(jié)點(diǎn)的層級(jí)路徑;
7、重建樹(shù)步驟,根據(jù)所述層級(jí)路徑重新構(gòu)建一顆攜帶api差異信息的樹(shù)。
8、在一些實(shí)施例中,在api獲取步驟與轉(zhuǎn)換步驟之間,還包括,
9、解析步驟,將api的參數(shù)定義中引用的模型解析為具體參數(shù)。
10、在一些實(shí)施例中,所述引用的模型為父子遞歸引用的數(shù)據(jù)模型時(shí),只進(jìn)行第一層引用關(guān)系的解析。
11、在一些實(shí)施例中,在轉(zhuǎn)換步驟與對(duì)比步驟之間,還包括,
12、噪點(diǎn)移除步驟,檢查所述樹(shù)結(jié)構(gòu),移除與差異對(duì)比無(wú)關(guān)的屬性;
13、在一些實(shí)施例中,還包括,
14、差異查詢(xún)步驟,通過(guò)對(duì)所述攜帶api差異信息的樹(shù)進(jìn)行過(guò)濾條件篩選查看api差異;
15、所述篩選條件包括:僅顯示差異、僅顯示破壞性變更。
16、在一些實(shí)施例中,所述樹(shù)結(jié)構(gòu)為jsonnode樹(shù)。
17、在一些實(shí)施例中,jsonnode樹(shù)中的節(jié)點(diǎn)類(lèi)型包括:對(duì)象類(lèi)型、數(shù)組類(lèi)型、值類(lèi)型;
18、不同節(jié)點(diǎn)類(lèi)型處理時(shí)進(jìn)行分別處理。
19、根據(jù)本發(fā)明的第二方面,提供了一種基于樹(shù)結(jié)構(gòu)的api差異對(duì)比裝置,包括:
20、api獲取模塊,用于獲取需要對(duì)比的api;
21、轉(zhuǎn)換模塊,用于將api文檔轉(zhuǎn)換為樹(shù)結(jié)構(gòu);
22、對(duì)比模塊,用于將需要對(duì)比的api通過(guò)所述樹(shù)結(jié)構(gòu)進(jìn)行對(duì)比;
23、記錄模塊,用于根據(jù)對(duì)比結(jié)果記錄參數(shù)的差異信息,以及每個(gè)參數(shù)在樹(shù)節(jié)點(diǎn)的層級(jí)路徑;
24、重建樹(shù)模塊,用于根據(jù)所述層級(jí)路徑重新構(gòu)建一顆攜帶api差異信息的樹(shù)。
25、根據(jù)本發(fā)明的第三方面,提供了一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,其特征在于,處理器執(zhí)行計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)上述任一實(shí)施例方法的步驟。
26、根據(jù)本發(fā)明的第四方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述任一實(shí)施例方法的步驟。
27、本發(fā)明的有益效果:
28、1.將api版本對(duì)比抽象為兩個(gè)樹(shù)結(jié)構(gòu)的對(duì)比,并根據(jù)樹(shù)節(jié)點(diǎn)路徑及節(jié)點(diǎn)數(shù)據(jù)類(lèi)型進(jìn)行逐一比對(duì),確保算法的一致性和穩(wěn)定性。并且對(duì)于一些無(wú)需參與比對(duì)的參數(shù)或?qū)傩缘脑朦c(diǎn)數(shù)據(jù)進(jìn)行移除提高了處理效率。
29、2.支持?jǐn)?shù)據(jù)模型的檢測(cè)及自動(dòng)解析,確保比對(duì)準(zhǔn)入的一致性。支持?jǐn)?shù)據(jù)模型遞歸引用的檢測(cè),避免遞歸引用導(dǎo)致重復(fù)比對(duì)造成的系統(tǒng)棧溢出。
30、3.重新構(gòu)建一顆攜帶api差異信息的樹(shù),可直觀的在一個(gè)api詳情的基礎(chǔ)上,看出與另外一個(gè)版本的差異,通過(guò)篩選破壞性變更能夠直觀的判斷api的變更是否會(huì)對(duì)上游調(diào)用方造成影響。
1.一種基于樹(shù)結(jié)構(gòu)的api差異對(duì)比方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的基于樹(shù)結(jié)構(gòu)的api差異對(duì)比方法,其特征在于,在api獲取步驟與轉(zhuǎn)換步驟之間,還包括,
3.根據(jù)權(quán)利要求2所述的基于樹(shù)結(jié)構(gòu)的api差異對(duì)比方法,其特征在于,
4.根據(jù)權(quán)利要求1所述的基于樹(shù)結(jié)構(gòu)的api差異對(duì)比方法,其特征在于,
5.根據(jù)權(quán)利要求1所述的基于樹(shù)結(jié)構(gòu)的api差異對(duì)比方法,其特征在于,還包括,
6.根據(jù)權(quán)利要求1所述的基于樹(shù)結(jié)構(gòu)的api差異對(duì)比方法,其特征在于,
7.根據(jù)權(quán)利要求6所述的api差異對(duì)比方法,其特征在于,
8.一種基于樹(shù)結(jié)構(gòu)的api差異對(duì)比裝置,其特征在于,包括:
9.一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,其特征在于,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)權(quán)利要求1至7中任一項(xiàng)所述方法的步驟。
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1至7中任一項(xiàng)所述的方法的步驟。