介面學習筆記-背景解析
一、常見介面型別
介面是指外部系統與系統之間以及內部各子系統之間的互動點。包括外部介面、內部介面,內部介面又包括:上層服務與下層服務介面、同級介面。
常見web介面:一類是http協議的介面,另一類是web service介面(如soup、rmi、rpc協議)。本文主要介紹http請求介面。
常見的http請求方式包括:get(查)、post(增),除此之外還有put(改)、delete(刪)等。日常工作中見到的最多的是get和post兩種。
GET:GET可以說是最常見的了,它本質就是傳送一個請求來取得伺服器上的某一資源。資源通過一組HTTP頭和呈現據(如HTML文字,或者圖片或者視訊等)返回給客戶端。GET請求中,永遠不會包含呈現資料。
POST:向伺服器提交資料。這個方法用途廣泛,幾乎目前所有的提交操作都是靠這個完成。它用來向指定資源提交資料進行處理請求(例如:提交表單和上傳檔案),資料包被包含在請求體中,post請求可能導致新的資源的建立或者已有的資源的修改。
PUT:這個方法比較少見。HTML表單也不支援這個。本質上來講, PUT和POST極為相似,都是向伺服器傳送資料,但它們之間有一個重要區別,PUT通常指定了資源的存放位置,而POST則沒有,POST的資料存放位置由伺服器自己決定。客戶端向伺服器傳送的資料取代指定文件的內容。
舉個例子:如一個用於提交博文的URL,/addBlog。如果用PUT,則提交的URL會是像這樣的”/addBlog/
DELETE:刪除某一個資源。基本上這個也很少見,不過還是有一些地方比如amazon的S3雲服務裡面就用的這個方法來刪除資源。
1)get型介面
格式:請求數引數寫在網址後面,用"?"連線,多個引數之間用"&"連線
場景:get型介面用於獲取資訊,多用於查詢資料,如列表查詢功能,點選查詢按鈕就呼叫一個get介面,然後把資訊返回出來
特點:
1)請求資料量小,
2)引數暴露於url地址中,故存在安全隱患
2)post型介面
說明:向指定資源位置提交資料(如提交表單、上傳檔案)來進行請求,post請求可能會導致新資源的建立
場景:如註冊、上傳、發帖等功能,如使用者在豆瓣網站對某本書進行收藏、寫筆記、發表評論
特點:請求資料量大,安全性高
3)put型介面
說明:put請求用於向指定資源位置上傳最新內容
4)delete型介面
說明:請求伺服器刪除請求裡url所標識的資源
二、不常見的介面型別
不常見的http請求方式包括:head、connect、options和trace。
head:HEAD和GET本質是一樣的,區別在於HEAD不含有呈現資料,而僅僅是HTTP頭資訊。換句話說,就是返回響應中沒有具體內容,只獲取報頭。有的人可能覺得這個方法沒什麼用,其實不是這樣的。想象一個業務情景:欲判斷某個資源是否存在,我們通常使用GET,但這裡用HEAD則意義更加明確。
connect:HTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器。
options:這個方法很有趣,但極少使用。它用於獲取當前URL所支援的方法。若請求成功,則它會在HTTP頭中包含一個名為“Allow”的頭,值是所支援的方法,如“GET, POST”。允許客戶端檢視伺服器的效能。
trace:回顯伺服器收到的請求,主要用於測試和診斷
三、GET與POST介面的區別
簡單來說,可以從三個方面去回到這個區別:方式、大小、安全
1).方式
方式指的是引數的傳入方式,GET方法一般是指獲取伺服器上的資料,引數直接跟著URL後邊,直接可以放到瀏覽器位址列裡,例如登入就是採用GET方法。而POST方法是指客戶端給伺服器上提交表單資料,所以POST是通過表單提交的,例如你網頁上的新使用者的註冊、調查問卷和答題就是採用POST方法。
2).大小
上面已經知道GET是直接在瀏覽器位址列輸入,由於瀏覽器有限制,一般整個URL的長度可以很長,但是不能超過2049KB的大小限制,而這個POST就沒有大小限制。
3).安全性
由於GET的引數是在瀏覽器位址列直接拼接,暴露在網際網路中,肯定不安全。POST是通過表單資料提交,相對比GET方法更安全。