更新時間:2022-08-24 09:44:26 來源:動力節(jié)點 瀏覽1241次
超文本傳輸??協(xié)議 - HTTP協(xié)議 - 定義了幾種方法(稱為“動詞”),指示要對資源執(zhí)行的所需操作。資源由 URI(統(tǒng)一資源標識符)指定,更常見的是 URL。該資源可能是預(yù)先存在的數(shù)據(jù)或動態(tài)生成的數(shù)據(jù),這取決于服務(wù)器的實現(xiàn)。服務(wù)器可以配置為支持任何方法組合。最常見的是:GET、POST、PUT 和 DELETE,但還有其他幾種??梢远x的方法數(shù)量沒有限制,這允許在不破壞現(xiàn)有基礎(chǔ)架構(gòu)的情況下指定未來的方法。
冪等性的概念與此討論相關(guān)。如果某件事是冪等的,那么無論你做多少次,結(jié)果總是一樣的。一個很簡單的例子來自數(shù)學(xué):乘以1;無論您將任何數(shù)字乘以 1 多少次,結(jié)果將始終相同:原始數(shù)字。

SOAP API 在通過 HTTP 發(fā)送時,只能使用 POST 動詞,具體的操作取決于被調(diào)用的 SOAP 方法。REST,作為一種架構(gòu)風(fēng)格而非標準,充分利用了所有可用的動詞。對于每個動詞應(yīng)該或不應(yīng)該做什么沒有明確的答案。在測試 RESTful API 時,您可以使用以下最佳實踐作為起點,但請咨詢您的內(nèi)部架構(gòu)師或開發(fā)負責(zé)人,以了解您的項目究竟遵循什么。
在這里討論的四種方法中,POST 是唯一被假定為非冪等的方法。這是在應(yīng)用程序中創(chuàng)建新對象時的首選方法,例如創(chuàng)建新訂單。每個 POST 方法調(diào)用都應(yīng)該導(dǎo)致在數(shù)據(jù)庫中創(chuàng)建(或可能刪除)一個新對象。
使用 POST 方法實現(xiàn)整個 API 中的每一個調(diào)用并不少見,尤其是對于遺留應(yīng)用程序。這是架構(gòu)問題和缺乏遠見的指標。如果還存在資源層次結(jié)構(gòu)問題,未來的增強將很困難。作為測試人員,在這種情況下您應(yīng)該特別謹慎,并在進行估算時考慮額外的測試時間。
PUT 方法應(yīng)該是冪等的。“應(yīng)該”一詞表示服務(wù)器能夠以不同的方式實現(xiàn)此方法。測試人員應(yīng)該將這樣的實現(xiàn)標記為不一致。
PUT 仍然可以用于創(chuàng)建對象,盡管由于它是冪等的,重復(fù)執(zhí)行相同的請求將具有與第一次相同的最終結(jié)果。例如,無論您發(fā)送多少次創(chuàng)建相同客戶 ID 的請求,它都應(yīng)該只在數(shù)據(jù)庫中創(chuàng)建一次。
DELETE方法是冪等的;多個請求應(yīng)該只導(dǎo)致一件事被刪除。例如,考慮上面的場景,多個 POST 請求被發(fā)送到服務(wù)器以獲得新訂單,從而導(dǎo)致同一產(chǎn)品的多個訂單。一個 DELETE 請求應(yīng)該接受一個唯一標識符以從訂單中只刪除一個產(chǎn)品,因此發(fā)送相同的 DELETE 請求將導(dǎo)致正確的冪等操作:產(chǎn)品的一個實例。
如果 DELETE 請求接受產(chǎn)品名稱,多次發(fā)送請求最終會從訂單中刪除所有產(chǎn)品,從而導(dǎo)致此方法的非冪等實現(xiàn)。同樣,作為測試人員,這種情況應(yīng)該引起開發(fā)團隊的注意。這種“多次刪除”功能的更正確實現(xiàn)是結(jié)合正確制作的 URL 的 POST 操作,例如:/{order_number}/{product_name}/刪除
GET 操作通常僅用于從系統(tǒng)中檢索信息。沒有添加或更改任何內(nèi)容,因此它不僅僅是冪等的,它實際上是無效的——它對數(shù)據(jù)絕對沒有副作用,除了可能的日志記錄。
正如我們提到的,在使用 REST 時可以有“其他動詞”。在這種情況下,需要記住以下幾點:
由于 REST 沒有標準,因此請確保從事產(chǎn)品工作的每個人都使用相同的定義。這應(yīng)該由您團隊的開發(fā)負責(zé)人設(shè)置。
由于某些動詞不是冪等的,因此每個人,尤其是使用公共 API 的消費者,在使用它們時都期望得到相同的結(jié)果,這一點至關(guān)重要。
驗證是否使用了正確的動詞。由于某些動詞可以達到相同的結(jié)果,因此請確保使用正確的動詞。從功能和一致性的角度來看。
以上就是關(guān)于“了解rest請求方法”的介紹,如果大家想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點的Java在線學(xué)習(xí),里面的課程內(nèi)容從入門到精通,細致全面,很適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對大家能夠有所幫助。