接口編程中,為什麼只用get和post?

PlightFlower


目前流行restful API接口規範,並非只是使用get和post,get查詢數據,delete刪除數據,put更新數據,post新建數據。具體使用可以參考restful API接口規範


非IT專業的編程棧


Get,post就足夠用了。。搞什麼restful規範的接口,活幹完就不錯了,別整那些花裡胡哨的



DJned


打開調試工具我們可以看到除了get和post,還有put、delete方法,那為啥只用到get和post呢?

我們先搞清楚這些方法的用處,在討論它們的使用。


GET:從服務器檢索內容或者實體在HTTP術語。GET請求通常不包含請求體,但是是被允許的。一些網絡緩存設備僅僅GET方式響應。GET請求通常不會導致服務器數據變化。

POST:用客戶端提供的數據更新實體。一個POST請求通常在請求體中包含信息,這些信息在應用服務器是可以被使用的。POST請求被認為是非冪等性的,意味著如果多個請求被處理和僅僅一個請求被處理結果是不一樣的。

PUT:添加一個由客戶端提供的數據實體。一個PUT請求通常在請求體包含服務器用來創建新實體用的信息。通常,PUT請求被認為是冪等性的,意味著請求可以反覆使用相同應用的結果。

DELETE:刪除一個基於URI內容的實體或者由客戶端提供的請求體。DELETE請求通常在REST服務請求接口。


其實還有其他一些方法,多是輔助使用的,這裡就不談論了。

可以看到這四個方法分別對應增、刪、改、查功能,下面來逐個分析。


GET請求,提供查詢功能,可將查詢條件拼接在url後面。url是有字符長度限制的,長度根據瀏覽器和服務器決定,其次由於url是完全暴露的,從安全角度看,涉及重要信息或資源的接口,不推薦使用。

POST請求,是非冪等性的,可局部更新資源也可全量更新資源,非常靈活,而且數據傳輸使用json格式,非常直觀易懂,這也是很多接口採用POST請求的原因。

PUT請求,是冪等性,請求多次結果都是相同的,在實用時有很大的侷限性,一般用於非常重要的防重的操作接口,比如發起支付,由於客戶端的抖動或其他原因導致重複請求接口,這時可以用PUT請求,但這也導致很多邏輯處理必須在服務器實現,大大降低了服務器的效率,其實防止重複請求接口可以用其他的簡便方法處理,這裡就不展開談論了。

DELETE請求,也是冪等性,一般很少有需要刪除資源的需求,其次在實用中也很雞肋。


通過以上分析可以看出,使用最多的POST請求,確實是因為它使用方便,當然也更開發者的習慣有關。以上四個方法,我司都有使用,主要是POST請求為主,其他三個方法根據特定需求使用的。


我是非著名工程師,希望我的回答對你有所幫助,歡迎點贊關注支持,感謝!


非著名攻城獅


對於軟件開發行業而言離不開接口(API)的存在,開發人員肯定用過第三方的API也曾自己寫過API給其它人調用。就現在而言,API基本上都是Web API形式,而API請求方式以GET和POST居多。但要說接口編程只用GET和POST,這種觀點就是錯誤的!

Web API是當前主流的接口形式

我們常說的“接口”其實是指應用程序接口,也就是API。API將某種業務功能封裝起來便於第三方調用,任何一門編程語言都可以用來開發API接口,而API接口的形式眾多,較常見的有:

1、基於HTTP協議的Web API

基於HTTP協議的API現在應用最廣,因為這類API是跨平臺跨語言的,看上去就和URL差不多。當下流行的RESTful API其實也屬於Web API,通過HTTP動詞(GET、POST、DELETE、PUT等)來表達不同類型的請求。

2、RPC 接口

RPC指的是遠程過程調用,本質上是“客戶端/服務器端”模式(C/S模式),通過RPC技術可以讓調用方像調用本地方法一樣快捷的調用遠程服務器上的方法。

RPC類接口也支持多種協議(如:HTTP、TCP、UDP、或自定義協議),數據傳輸方式也是多種多樣的(最常用的是 Json、Binary、Protobuf )。

3、Web Service 概念類接口

Web Service 其實並不是特指某一個技術,而是一類以Web形式提供的服務都可以稱之為Web Service,像上面說的Web API、RESTful、SOAP等都屬於Web Service範疇。

為什麼Web API最常用的請求類型是GET和POST?

的確,Web API請求時最常用的請求類型(HTTP動詞)是GET、POST。在RESTful風格推出之前,我們的接口傳參是少數的一般用GET請求,參數較多的就用POST請求。

但隨著RESTful風格推出後,我們是用不同的HTTP動詞來代表不同的請求,如:

  • GET:獲取資源

  • POST:創建資源

  • PUT:更新資源

  • DELETE:刪除資源

但為什麼感覺GET和POST居多呢?原因有以下幾點:

  • 現在還有很多Web API沒有按照RESTful風格建議來編寫API;

  • 即使是RESTful風格類型的API,PUT、DELETE這類動詞其實也是建議在POST動詞基礎之上的。


以上就是我的觀點,對於這個問題大家是怎麼看待的呢?歡迎在下方評論區交流 ~ 我是科技領域創作者,十年互聯網從業經驗,歡迎關注我瞭解更多科技知識!

網絡圈


我知道有put,delete,不過一個月的活要我一週幹完,管不了那麼多了,直接複製黏貼拉倒


用戶268902756


打個比喻:世界上有那麼多的刀,你卻認為家裡的菜刀(get、post)最牛逼,菜刀在手,走遍天下,反正能用,卻不管什麼場景用什麼刀最好用,最方便,好比剪指甲,明明指甲刀更好,而你拿起菜刀照樣幹。。。


分享到:


相關文章: