欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

簡述API版本控制最佳實踐

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

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

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

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

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

傳統(tǒng)的API版本控制:n+1

可以保證新版本的服務(wù)更改包括:刪除操作、重命名操作、移位數(shù)據(jù)類型或順序的操作參數(shù)更改,以及數(shù)據(jù)類型的復(fù)雜結(jié)構(gòu)更改。

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

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

一個URI來統(tǒng)治所有的URI

一種思想是專注于一個不變的URI,只有一組消費標(biāo)準(zhǔn)。如果改變了API結(jié)構(gòu)、改變了資源或修改了參數(shù)集,那么產(chǎn)品將使用相同的URI重新啟動。這就把重構(gòu)代碼的責(zé)任推給了下游的開發(fā)人員。

蒂姆?伯納斯-李(Tim Berners-Lee)的名字被這種方法的支持者提到。他經(jīng)常說:“一個酷的URI是不會改變的?!边@句話的本意是要說明新興的互聯(lián)網(wǎng)依靠網(wǎng)頁內(nèi)的超鏈接才能生存下去?;ヂ?lián)網(wǎng)絡(luò)在當(dāng)時是一系列信息節(jié)點。

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

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

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

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

在向后兼容

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

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

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

更廣的進(jìn)行版本控制的例子

我們可以從已建立的web API提供商的版本控制實踐中學(xué)到什么?谷歌從一開始就直截了當(dāng)?shù)乜隙司幪柊姹净?“網(wǎng)絡(luò)API應(yīng)該使用語義版本化?!皼]有多少回旋余地。它們也有一個類似的平面系統(tǒng)。版本指示器使用v. major . min . patch形式。

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

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

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

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

約會網(wǎng)絡(luò)Badoo選擇了持續(xù)的版本控制,即添加特性而端點保持不變。舊客戶端可以使用舊字段,新客戶端可以使用添加的字段。API請求是事務(wù)性的,發(fā)出一個特性請求調(diào)用并返回可用選項列表。特性檢查可以作為一種狀態(tài)請求。

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

帶有Accept標(biāo)頭的版本

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

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

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

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

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

工程師們會在公司的歡樂時光里,興高采烈地大聲討論什么是合適的回應(yīng)碼。但是,這里有一些有用的負(fù)面反應(yīng),它們?nèi)唛L到足以對下游有所幫助。

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"

業(yè)務(wù)動機(jī)將指導(dǎo)版本選擇

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

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Web
    Web
    +關(guān)注

    關(guān)注

    2

    文章

    1272

    瀏覽量

    69760
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1518

    瀏覽量

    62459
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4837

    瀏覽量

    69130
收藏 人收藏

    評論

    相關(guān)推薦

    C編程最佳實踐.doc

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

    Dockerfile的最佳實踐

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

    變量聲明最佳實踐

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

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

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

    虛幻引擎的紋理最佳實踐

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

    MySql5.6性能優(yōu)化最佳實踐

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

    Vivado Design Suite搭配版本控制系統(tǒng)進(jìn)行使用

    了解將Vivado Design Suite與版本控制系統(tǒng)配合使用的最佳實踐。 修訂控制系統(tǒng)用于嚴(yán)格
    的頭像 發(fā)表于 11-20 07:00 ?4048次閱讀

    使用Postman成功實現(xiàn)API測試自動化的最佳實踐

      API 測試自動化支持兩個獨立軟件系統(tǒng)之間的通信和數(shù)據(jù)交換。實現(xiàn) API 的軟件系統(tǒng)包含可由另一個軟件系統(tǒng)執(zhí)行的功能/子例程。它通過增加測試覆蓋率和頻率來幫助創(chuàng)建更健壯和抗錯誤的程序。
    的頭像 發(fā)表于 06-20 10:19 ?971次閱讀

    DevOps最佳實踐

      遵循上述最佳實踐,組織可以開發(fā)和自動化其解決方案的交付過程,以有效地實現(xiàn)其業(yè)務(wù)目標(biāo)。
    的頭像 發(fā)表于 08-15 14:41 ?1002次閱讀

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

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

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

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

    SAN管理最佳實踐指南

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

    SAN設(shè)計和最佳實踐指南

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

    Windows 10遷移的最佳實踐

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

    MES系統(tǒng)的最佳實踐案例

    效率、降低成本、保證產(chǎn)品質(zhì)量。 MES系統(tǒng)的最佳實踐案例 引言 在當(dāng)今競爭激烈的制造業(yè)環(huán)境中,企業(yè)必須不斷尋求創(chuàng)新和改進(jìn)的方法來保持競爭力。MES系統(tǒng)作為一種關(guān)鍵的信息技術(shù)工具,已經(jīng)被廣泛應(yīng)用于各種制造行業(yè),以實現(xiàn)生產(chǎn)過程的優(yōu)化和管理。本文將探討MES系統(tǒng)的
    的頭像 發(fā)表于 10-27 09:33 ?1551次閱讀