“這能有多難?”

原標題:OpenAPI 很難
文章來源:AI前線
內容字數:5533字
OpenAPI:比你想象的難得多
本文講述了作者quobix構建一個完全理解OpenAPI的引擎、框架和平臺的經歷,以及過程中遇到的巨大挑戰。作者最初低估了任務的難度,認為僅僅是解析YAML或JSON格式的數據,事實卻遠非如此。
1. OpenAPI的復雜性
OpenAPI并非簡單的語言,而是由多種其他語言(如YAML、JSON、JSON Schema)組成的復雜系統。YAML支持錨點、別名和有序列表,而JSON則不支持,這導致了兼容性問題。JSON Schema本身就是一個復雜的標準,JSON指針的處理也增加了難度。這種多重語言的組合使得OpenAPI的解析和處理變得異常棘手。
2. 解析與編譯的挑戰
簡單的JSON解析在遇到重復數據和引用(JSON指針)時就會失效。工程師需要構建查找表或哈希表來索引和拼接引用,處理循環引用造成的無限循環或堆棧溢出問題。作者指出,這實際上需要編寫解釋器和編譯器,而非簡單的解析器,這大大增加了任務的復雜性。許多工程師最終放棄自行開發,轉而使用現成的庫,但這些庫往往功能不完善。
3. Rolodex系統的構建
為了解決引用和文件管理問題,作者構建了“Rolodex”系統,這是一個復雜的索引系統,用于在龐大的文件網絡中查找和管理指針。這個系統的構建耗費了大量時間和精力,最終效果卻并不如預期理想,這體現了在處理復雜系統時,過度設計可能帶來的問題。
4. OpenAPI Doctor的強大功能
作者展示了其構建的OpenAPI Doctor工具,該工具能夠高效地處理和可視化OpenAPI規范,包括處理大量的引用和文件。用戶可以輕松跳轉到文檔中的不同位置,查看和診斷引用,探索復雜的規范結構,這得益于底層Rolodex系統的支持。
5. 處理大型規范的挑戰
作者用DigitalOcean OpenAPI規范(1600多個文件,數十萬個引用)來測試OpenAPI Doctor,證明了該工具能夠處理超大型規范,而大多數其他工具則會崩潰或失敗。這突顯了OpenAPI Doctor在處理復雜、大型OpenAPI規范方面的優勢。
6. 結論
本文通過作者的親身經歷,揭示了構建一個完全理解OpenAPI的引擎的巨大挑戰。這不僅需要深入理解多種語言和規范,還需要處理復雜的引用和循環引用問題。OpenAPI Doctor的成功,證明了通過精心設計和強大的底層架構,可以有效地應對這些挑戰。
聯系作者
文章來源:AI前線
作者微信:
作者簡介:面向AI愛好者、開發者和科學家,提供大模型最新資訊、AI技術分享干貨、一線業界實踐案例,助你全面擁抱AIGC。

粵公網安備 44011502001135號