核心概念
本文提出了一種名為 AutoOAS 的新方法,可以直接從 Java 原始碼自動生成準確且詳細的 OpenAPI 描述,解決了現有方法的不足,並在真實世界專案中展現出更高的準確性和完整性。
這篇研究論文探討了從 Java 原始碼自動生成 OpenAPI 描述的議題,特別是針對 Spring Boot 專案。OpenAPI 描述對於 REST API 文件和使用至關重要,但手動創建既耗時又容易出錯。
現有方法的不足
作者首先評估了三種現有的 OpenAPI 生成方法:Respector、Prophet 和 springdoc-openapi。他們發現這些方法存在一些缺陷,包括:
忽略 Spring 設定檔:無法處理基於設定檔的不同 API 行為。
參數和回應處理不完整:無法正確處理模型屬性註解、JSON 屬性註解、請求主體註解和異常處理機制。
資料模型表示不佳:無法準確描述資料模型,特別是繼承資訊。
AutoOAS 方法
為了克服這些限制,作者提出了 AutoOAS,這是一種新的靜態分析方法,可以直接從 Java 原始碼生成更準確和詳細的 OpenAPI 描述。AutoOAS 的運作分為三個階段:
**原始碼解析:**使用 Spoon 解析 Java 原始碼,識別控制器類別,並根據 Spring 設定檔對其進行分組。
**生成 OpenAPI 方法、參數和回應:**分析控制器類別中的方法定義,提取端點路徑、HTTP 方法、參數、回應碼和資料模型資訊。
**生成 OpenAPI 資料模型:**識別並描述參數和回應中引用的資料模型,包括簡單類型和命名結構描述,並保留繼承資訊。
評估結果
作者在七個真實世界的 Spring Boot 專案上評估了 AutoOAS,並將其效能與其他三種方法進行了比較。結果顯示,AutoOAS 在識別方法、參數和回應方面均取得了最高的精確率和召回率。此外,AutoOAS 是唯一能夠保留資料模型繼承資訊的方法,並且在描述資料模型方面也表現出色。
總結
AutoOAS 為從 Java Spring Boot 原始碼生成準確的 OpenAPI 描述提供了一種有效且可靠的方法。它解決了現有方法的局限性,並為開發人員提供了更準確、詳細和可用的 API 文件。
統計資料
AutoOAS 在識別方法方面取得了 100% 的整體精確率和召回率。
AutoOAS 在識別參數方面取得了 73% 的整體精確率和 69% 的整體召回率。
AutoOAS 在識別回應方面取得了 99% 的整體精確率和 97% 的整體召回率。