
如何免費調(diào)用有道翻譯API實現(xiàn)多語言翻譯
您可以使用 Spectral 創(chuàng)建規(guī)則集,這些規(guī)則集可以具有自定義規(guī)則甚至自定義功能!
這些自定義規(guī)則看起來有點像這樣:
這個比較流行。OpenAPI 并不關(guān)心你如何將模型首字母大寫,但很多代碼生成器會使用模型名稱來編寫代碼,而不一致的類名會讓人不爽。
讓我們更進一步:
此規(guī)則實際上超越了 API 描述的元數(shù)據(jù),而是著眼于實際的 API 設(shè)計本身。這意味著“路徑”(接口)必須帶連字符,因此/recent-files是可以的,但/recent_files不行。
您可以開始真正發(fā)揮創(chuàng)造力。
我不知道為什么,但在任何給定 API 的生命周期的某個時刻,一些開發(fā)人員會建議添加 X-Foo 標頭,盡管十多年來它一直導致問題。好吧,我們可以用這條規(guī)則把他們拒之門外。
如果盡早完成,這將在開發(fā)過程中塑造實際的 API。如果您先編寫代碼,那么好吧,您必須返回并更改一堆代碼。希望您沒有發(fā)布它,因為現(xiàn)在您需要為/recent_files /recent_files進行大量重定向。如果您使用API 設(shè)計優(yōu)先工作流程,那么當您剛剛獲得一些 YAML 時,您會盡早注意到這一點,并且您的 API 首先得到構(gòu)建。
由于 Spectral 是一個 CLI/JS 工具,因此可以通過各種方式來執(zhí)行此樣式指南。
如果您使用Stoplight Studio,那么它就會直接嵌入到編輯器中,因此設(shè)計 API 的人可以立即正確完成所有操作。無需按 Alt-Tab 鍵轉(zhuǎn)到 CLI 或等到 PR 完成。
我正在努力抽出時間從Heroku或PayPal獲取樣式指南,并將它們轉(zhuǎn)換成一個巨大的示例規(guī)則集。至少,我可以從中汲取一些靈感,用于我正在整理的新規(guī)則集:OpenAPI Contrib > 樣式指南。這應該是一個有趣的社區(qū)努力。
Spectral 還有一個GitHub Action,我們正在努力改進它。評論范圍和建議即將推出!
GraphQL 有自己的內(nèi)置類型系統(tǒng),其中有一些與基于 OpenAPI / JSON Schema 相同類型的關(guān)鍵字。
GraphQL 使一些設(shè)計決策變得更容易,比如如何處理關(guān)系。無需在嵌套/嵌入相關(guān)資源、使用復合文檔內(nèi)聯(lián)所有內(nèi)容或使用超鏈接鏈接到相關(guān)數(shù)據(jù)之間做出選擇,GraphQL 會為您做出決定。盡管如此,在 GraphQL 做出的默認決策之外,仍可能出現(xiàn)許多不一致的情況。GraphQL 人員無法逃避 lint 的需要,但幸運的是,存在一個很棒的 linter:GraphQL Schema Linter。
也可以為此編寫自定義規(guī)則,這樣您就可以在 CI 中自動化您的樣式指南。我看不到機器人或 GitHub Action,但它們并不難組合在一起。
GraphQL 領(lǐng)域中一款擁有出色機器人的架構(gòu)工具是 GraphQL Doctor。它似乎希望在總體上提供更多幫助,但到目前為止,它專注于檢測重大更改。與任何類型的系統(tǒng)一樣,謹慎發(fā)展和魯莽更改之間存在一條細線,而 GraphQL Doctor 會發(fā)現(xiàn)后者。
如果這兩個工具能夠合并就好了,或者 GraphQL Doctor 機器人可以支持 GraphQL Schema Linter,但就目前而言,它是一個兩站式商店。
Google 在 API 領(lǐng)域做了一些非常有趣的工作。他們是 API 領(lǐng)域首批不斷解釋“有時你需要 REST,有時你需要 RPC”的大公司之一,并且他們堅持使用適用于gRPC 和 HTTP 的通用工具。API linter 在 protobuf 表層上運行,但可以設(shè)置為與 HTTP 端點一起工作:
使用協(xié)議緩沖區(qū)時,每個 RPC 都必須使用 google.api.http 注釋定義 HTTP 方法和路徑:
API Linter 的核心規(guī)則集相當令人印象深刻,它重點關(guān)注 HTTP 規(guī)范中不太清楚的尷尬部分。例如,GET 應該有一個主體嗎?答案是“也許可以”,但很可能沒有,這取決于你正在構(gòu)建的工具,呃。求助。
谷歌決定直接回答:不。
他們還決定說服團隊從 proto2 升級到 proto3。
您可以使用這些東西自動化幾乎任何事情,并且我一直在思考許多超越強制命名或復數(shù)化的常見用例的規(guī)則。
這些規(guī)則中有許多是特定于 HTTP API 的,但您明白我的意思。隨著時間的推移,我將研究其中一些規(guī)則,并將它們添加到 OpenAPI Contrib 的樣式指南中,如果您愿意做出貢獻,我很樂意在 GitHub 上指導您完成整個過程。
如果您聽說過 API 治理這個術(shù)語,那么大多數(shù)人都在談論這個術(shù)語。目前,許多試圖進行治理的人都在仔細查看每個 PR 上的 API 描述,并培訓人們記住他們提出的所有質(zhì)量規(guī)則。
手動 API 培訓是一項吃力不討好、效率低下、永無止境的任務,它可以被編輯器、git hook、CI 管道、GitHub Action 或機器人中嵌入的 linter 所取代(或大幅簡化)。
不要浪費客戶的時間強迫他們嘗試找出您的不一致之處。不要浪費所有 API 開發(fā)人員的時間來學習記住樣式指南。不要浪費 API 管理團隊的時間來手動審查 API。不要浪費每個人的時間來修復生產(chǎn)中的不一致之處。
原文鏈接:Automated?Style?Guides?for?REST,?GraphQL?and?gRPC