色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

簡述API版本控制最佳實踐

jf_78858299 ? 來源:超級架構師 ? 作者:南極真君 ? 2023-02-22 10:42 ? 次閱讀

變化是不可避免的,增長是一件好事。當您的API已經超出了最初的意圖和容量時,就該考慮下一個版本了。

無論下一次迭代是一個完整的版本升級還是一個功能擴展,重要的是要考慮你如何讓你的開發人員知道它的優缺點。與傳統的軟件版本控制相比,API版本控制可能會對下游使用它的產品產生復雜的影響。

較大的版本調整通常意味著API代碼庫中一個重要的里程碑。它聲明了API使用和實現需求的重大變化。不需要改變現有調用的特性添加是產品有機增長的一部分,不需要同樣的考慮。

一旦你開始刪除一些東西,或者戲劇性地改變現有的東西,就該考慮另一個版本了。通常,這些新版本會變成全新的產品。盡管它們共享一個共同的祖先,但是遺留api的新版本在實現時需要仔細考慮。

傳統的API版本控制:n+1

可以保證新版本的服務更改包括:刪除操作、重命名操作、移位數據類型或順序的操作參數更改,以及數據類型的復雜結構更改。

版本增量還可以指示API使用需求的重大變化。它還可以對API提供的底層資源進行徹底的更改。在任何一種情況下,依賴于API實現核心功能的產品和平臺都可能需要進行代碼重構來適應。

這可能會耗費大量的時間和資源,因此對于多個涉眾來說,使用一種合理且文檔記錄良好的URI版本控制方法是至關重要的。版本控制在團隊中可能是一個有爭議的話題,通常第一個問題就是是否使用它。

一個URI來統治所有的URI

一種思想是專注于一個不變的URI,只有一組消費標準。如果改變了API結構、改變了資源或修改了參數集,那么產品將使用相同的URI重新啟動。這就把重構代碼的責任推給了下游的開發人員。

蒂姆?伯納斯-李(Tim Berners-Lee)的名字被這種方法的支持者提到。他經常說:“一個酷的URI是不會改變的。”這句話的本意是要說明新興的互聯網依靠網頁內的超鏈接才能生存下去。互聯網絡在當時是一系列信息節點。

不過,世界已經改變了,我們使用的是一個相互連接的矩陣,它由功能強大、資源豐富的web服務組成。一旦服務變得廣泛,早期的方法類似于軟件版本號。但是,獨立軟件對下游的影響與相互依賴的web服務大不相同。

IBM在他們自己的“Web服務最佳實踐”中解決了這個問題:

正確處理API版本控制一直是分布式系統開發者面臨的最困難的問題之一。人們提出了各種各樣的方案,從CORBA(公共對象請求代理體系結構)采用的自由放任的方法,到DCOM中使用的更嚴格的方案(分布式組件對象模型)。隨著Web服務的出現,您可以利用一些新特性來幫助緩解問題,但殘酷的事實是,版本控制還沒有內置到Web服務體系結構中。”

什么是“最佳實踐”已經隨著時間的推移而演變,并由供應商對其自己產品的選擇決定,而不一定來自任何外部管理機構。因此,當涉及到選擇版本控制方法時,有各種各樣的實踐。

在向后兼容

另一個要考慮的問題是向后兼容性。對于許多web資源API的提供者來說,這是首要考慮的問題。維護一個資源密集型API的多個版本會嚴重消耗工程團隊的時間和精力。它還會給遷移到更現代體系結構的服務帶來長期的穩定性問題。

對許多人來說,引入一個實質上改變API的新版本實際上就是啟動一個全新的服務。將其作為一個新產品,使用新的文檔、服務水平協議、層訪問更改等,可能會產生重大的業務影響。許多白板上都寫滿了數字,爭論一個變化是工程選擇還是商業轉變。

一旦做出了引入新版本的決定,查看一下已建立的提供商,看看是否有經過測試的解決方案,這是很有幫助的。

更廣的進行版本控制的例子

我們可以從已建立的web API提供商的版本控制實踐中學到什么?谷歌從一開始就直截了當地肯定了編號版本化:“網絡API應該使用語義版本化。“沒有多少回旋余地。它們也有一個類似的平面系統。版本指示器使用v. major . min . patch形式。

Twilio在URL中使用了時間戳,而不是版本號。Salesforce選擇vXX.X在URL的中間。Facebook會將版本預先添加到端點路徑中。版本實際上是可選的,未指定的版本請求將被路由到最舊的可用版本。

請注意vX.X提供的粒度,vX.X通常用于開發,而不一定用于生產。首先檢查文檔,但是在生產代碼中選擇序號引用是一個好主意。

DevOps人員可能熟悉用于版本定義的UDDI和WDSL方法。HTTP解決方案要流行得多,但是有對這種方法的支持。它需要通過XML交換進行版本請求以獲得正確的版本。

像微軟、IBM和Oracle這樣的巨石公司在他們的一些文檔中都引用了這種方法。盡管,HTTP版本標識在許多部門和產品中被接受。

約會網絡Badoo選擇了持續的版本控制,即添加特性而端點保持不變。舊客戶端可以使用舊字段,新客戶端可以使用添加的字段。API請求是事務性的,發出一個特性請求調用并返回可用選項列表。特性檢查可以作為一種狀態請求。

API stylebook在版本控制方面還有其他一些方法可供探索。沒有一套成文的規范,公司繼續探索不同的選擇。

帶有Accept標頭的版本

路徑參數的一種常見替代方法是頭交換。它們可以更詳細地描述預期的響應,并且通常包含在HTTP請求中。使用特定于資源的頭方法允許包含其他參數(如緩存、壓縮和內容協商)。

API提供者通常在其響應中傳達資源標準和限制,因此開發人員無論如何都需要檢查header交換。除了響應代碼之外,常見的報頭響應還包括速率限制、特定的錯誤消息、基于時間的數據等等。

聰明的離群值使用MIME類型包含版本指示符。API提供者在其后端注冊這些MIME類型,然后用戶包括Accept頭和Content-type頭。IETF在RFC4627中合法化了這種方法。雖然這是可行的,但是選擇這種方法的開發人員最終將不可避免地向管理類型解釋他們的選擇,這些管理類型會說:“但是它不能在HTML表單上工作,那么為什么要這樣做呢?”

Accept: application/pre.company.app-v1+json Content-Type: application/pre.company.app-v1+json

關于實施的爭論是深刻的,并將繼續下去。因此,開發人員和供應商將不得不根據他們的具體需求做出選擇。通常,最常見的方法是URI參數和頭標準的組合。api接受帶有參數的URI請求,然后返回帶有適當響應代碼的有效負載,以及(希望如此)響應頭中的詳細元數據。

工程師們會在公司的歡樂時光里,興高采烈地大聲討論什么是合適的回應碼。但是,這里有一些有用的負面反應,它們冗長到足以對下游有所幫助。

400: BAD_REQUEST: ApiVersionUnspecified: An API version is required, but was not specified
400: BAD_REQUEST: InvalidApiVersion: An API version was specified, but it is invalid
400: BAD_REQUEST: AmbiguousApiVersion: An API version was specified multiple times with different values
400, 405: BAD_REQUEST, METHOD_NOT_ALLOWED: UnsupportedApiVersion: The specified API version is not supported
301: MOVED_PERMANENTLY: movedPermanently: This request and future requests for the same operation have to be sent to the URL specified in the Location header of this response instead of to the URL to which this request was sent
410: GONE: deleted: The request failed because the resource associated with the request has been deleted
299: OK: Warning: "Deprecated API"

業務動機將指導版本選擇

在某些方面,版本控制的技術方面是最容易解決的。真正的爭論歸結為產品需求、業務關注點和未來計劃。就工程支持、后端資源和簡單帶寬而言,支持一個API的多個版本的需求可能非常高。

另外,要想做得好,新版本需要豐富的文檔來成功地轉換。由于對快速發展的公司來說,最新的文檔往往沒有什么優先級,因此它可能會以新舊文檔的混搭而告終。糟糕的文檔會導致時間和金錢上的巨大損失。

這里的主要要點是版本控制是一個多方面的對話。這不僅僅是一個技術問題。下游影響和遺留成本可能是巨大的,為了有效增長,應該對整個過程進行仔細考慮。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Web
    Web
    +關注

    關注

    2

    文章

    1262

    瀏覽量

    69441
  • API
    API
    +關注

    關注

    2

    文章

    1499

    瀏覽量

    61964
  • 代碼
    +關注

    關注

    30

    文章

    4779

    瀏覽量

    68524
收藏 人收藏

    評論

    相關推薦

    C編程最佳實踐.doc

    C編程最佳實踐.doc
    發表于 08-17 14:37

    Dockerfile的最佳實踐

    ”微服務一條龍“最佳指南-“最佳實踐”篇:Dockerfile
    發表于 07-11 16:22

    變量聲明最佳實踐

    所以我們開始編寫32位和16位代碼,并過渡到MPLAB X和XC編譯器。我想到的一個主題是聲明變量的最佳實踐。常規IpType。h或類型。h pr STDIN。或It8或字節char等任何想法,走哪條路?
    發表于 09-30 12:01

    在2.7.4中是否有可靠連接到wifi的新API最佳實踐

    了重試代碼,當 connect() 完全按照上面的方式失敗并且它永遠不會成功時。唯一的辦法是重置處理器。然后下一次它可能會成功,如果是這樣,一切都會永遠好起來。 所以我的問題是:在 2.7.4 中是否有可靠連接到 wifi 的新 API 最佳
    發表于 05-08 10:37

    虛幻引擎的紋理最佳實踐

    紋理是游戲不可或缺的一部分。 這是一個藝術家可以直接控制的領域,以提高游戲的性能。 本最佳實踐指南介紹了幾種紋理優化,這些優化可以幫助您的游戲運行得更流暢、看起來更好。 最佳
    發表于 08-28 06:39

    MySql5.6性能優化最佳實踐

    MySql5.6性能優化最佳實踐
    發表于 09-08 08:47 ?13次下載
    MySql5.6性能優化<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>

    Vivado Design Suite搭配版本控制系統進行使用

    了解將Vivado Design Suite與版本控制系統配合使用的最佳實踐。 修訂控制系統用于嚴格
    的頭像 發表于 11-20 07:00 ?3998次閱讀

    使用Postman成功實現API測試自動化的最佳實踐

      API 測試自動化支持兩個獨立軟件系統之間的通信和數據交換。實現 API 的軟件系統包含可由另一個軟件系統執行的功能/子例程。它通過增加測試覆蓋率和頻率來幫助創建更健壯和抗錯誤的程序。
    的頭像 發表于 07-05 10:46 ?952次閱讀

    DevOps最佳實踐

      遵循上述最佳實踐,組織可以開發和自動化其解決方案的交付過程,以有效地實現其業務目標。
    的頭像 發表于 08-15 14:41 ?947次閱讀

    EMC 敏感性 NCV7693 LED 控制器的最佳實踐

    EMC 敏感性 NCV7693 LED 控制器的最佳實踐
    發表于 11-14 21:08 ?6次下載
    EMC 敏感性 NCV7693 LED <b class='flag-5'>控制</b>器的<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>

    圖像傳感器處理和最佳實踐

    圖像傳感器處理和最佳實踐
    發表于 11-15 20:30 ?0次下載
    圖像傳感器處理和<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>

    SAN管理最佳實踐指南

    電子發燒友網站提供《SAN管理最佳實踐指南.pdf》資料免費下載
    發表于 08-29 09:20 ?0次下載
    SAN管理<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>指南

    SAN設計和最佳實踐指南

    電子發燒友網站提供《SAN設計和最佳實踐指南.pdf》資料免費下載
    發表于 09-01 11:02 ?0次下載
    SAN設計和<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>指南

    Windows 10遷移的最佳實踐

    電子發燒友網站提供《Windows 10遷移的最佳實踐.pdf》資料免費下載
    發表于 09-07 15:37 ?0次下載
    Windows 10遷移的<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>

    MES系統的最佳實踐案例

    效率、降低成本、保證產品質量。 MES系統的最佳實踐案例 引言 在當今競爭激烈的制造業環境中,企業必須不斷尋求創新和改進的方法來保持競爭力。MES系統作為一種關鍵的信息技術工具,已經被廣泛應用于各種制造行業,以實現生產過程的優化和管理。本文將探討MES系統的
    的頭像 發表于 10-27 09:33 ?820次閱讀
    主站蜘蛛池模板: 再深点灬舒服灬太大了在线视频| 成年人免费在线视频观看| 国产精品视频yy9099| 男人插曲女人的视频| 亚洲视频中文字幕| 灌饱娇嫩H将军公主最新章节| 伦理 电影在线观看百度影音| 亚洲qingse中文字幕久久| 超碰97免费人妻| 免费光看午夜请高视频| 亚洲视频中文| 国产在线播放KKK| 脱jk裙的美女露小内内无遮挡| 99视频这里只有精品| 久久国产乱子伦精品免费M| 无套内射CHINESEHD| 成年女人免费影院播放| 奶头被客人吸得又红又肿| 与子敌伦刺激对白亂輪亂性| 国家产午夜精品无人区| 受被三个攻各种道具PLAY| lesbabes性欧美| 母狗黄淑珍| 99爱在线观看精品视频| 露露的性战k8经典| 伊人久久天堂| 紧缚束缚调教丨vk| 亚洲国产区中文在线观看| 国产麻豆精品人妻无码A片| 视频一区国产第一页| 超碰免费视频部落格| 欧美亚洲韩日午夜| 99国产在线精品视频| 蜜桃视频无码区在线观看| 在线观看成人免费| 久草色视频| 亚洲字幕在线观看| 精品一区二区三区AV天堂| 亚洲免费每日在线观看| 国产自产视频在线观看香蕉| 小sao货水好多真紧h的视频|