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