最近在逛知乎的時候發現一個有趣的問題:《公司規定所有接口都用 post 請求,這是為什么?》
原問題:zhihu.com/question/336797348
看到這個問題的時候其實我也挺有感觸的,因為我也曾經這樣問過我自己。在19的時候接到一個項目是從零開始搭建一個微服務,當時就有了解過接口的一些規范,比如耳熟能詳的Restful規范,就被應用到這個微服務項目中。
今天再次看到這個問題,我也有了一些新的理解和感觸,臨時回顧了一下get與post的請求的一些區別:
- post更安全(不會作為url的一部分,不會被緩存、保存在服務器日志、以及瀏覽器瀏覽記錄中)
- post發送的數據更大(get有url長度限制)
- post能發送更多的數據類型(get只能發送ASCII字符)
- post比get慢
- post用于修改和寫入數據,get一般用于搜索排序和篩選之類的操作
- get請求的是靜態資源,則會緩存,如果是數據,則不會緩存
查看上面的區別,就會發現post在發送數據量大的請求時優勢很顯示,get則更適合獲取靜態資源、簡單的查詢等接口。
我個人在開發接口的時候也會注意,將簡單的查詢請求使用get方法,其他增、刪、改、復雜的查詢請求都可以使用post,但不會像題主的公司一樣全部使用post。
網友程墨Morgan提出如果是自己會按照『業界最佳實踐』制定規范:

另外一個知友提出:就是為了遷就低水平不思進取的架構師和前后端程序員們。
對此,如果是你來設計公司的API規范,會規定所有接口都用 post 請求嗎,這是為什么?
原文鏈接:https://mp.weixin.qq.com/s/zizfyloCJAXcflUsnaJbfw