1. HTTP GET vs HTTP POST
也許,你會想起一個面試題。HTTP 請求的 GET 與 POST 方式有什么區(qū)別? 你可能會回答到:GET 方式通過 URL 提交數(shù)據(jù),數(shù)據(jù)在 URL 中可以看到;POST 方式,數(shù)據(jù)放置在 HTML HEADER 內(nèi)提交。但是,我們現(xiàn)在從 RESTful 的資源角度來看待問題,HTTP GET 方法是冪等的,所以它適合作為查詢操作,HTTP POST 方法是非冪等的,所以用來表示新增操作。
但是,也有例外,我們有的時候可能需要把查詢方法改造成 HTTP POST 方法。比如,超長(1k)的 GET URL 使用 POST 方法來替代,因?yàn)?GET 受到 URL 長度的限制。雖然,它不符合冪等性,但是它是一種折中的方案。
2. HTTP POST vs HTTP PUT
對于 HTTP POST 方法和 HTTP PUT 方法,我們一般的理解是 POST 表示創(chuàng)建資源,PUT 表示更新資源。當(dāng)然,這個是正確的理解。
但是,實(shí)際上,兩個方法都用于創(chuàng)建資源,更為本質(zhì)的差別是在冪等性。HTTP POST 方法是非冪等,所以用來表示創(chuàng)建資源,HTTP PUT 方法是冪等的,因此表示更新資源更加貼切。
3. HTTP PUT vs HTTP PATCH
此時,你看會有另外一個問題。HTTP PUT 方法和 HTTP PATCH 方法,都是用來表述更新資源,它們之間有什么區(qū)別呢?我們一般的理解是 PUT 表示更新全部資源,PATCH 表示更新部分資源。首先,這個是我們遵守的第一準(zhǔn)則。根據(jù)上面的描述,PATCH 方法是非冪等的,因此我們在設(shè)計(jì)我們服務(wù)端的 RESTful API 的時候,也需要考慮。如果,我們想要明確的告訴調(diào)用者我們的資源是冪等的,我的設(shè)計(jì)更傾向于使用 HTTP PUT 方法。
更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗(yàn),課程大綱更科學(xué)更專業(yè),有針對零基礎(chǔ)的就業(yè)班,有針對想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實(shí)現(xiàn)java程序員夢想。