1. 程式人生 > 其它 >介面學習筆記-背景解析

介面學習筆記-背景解析

一、常見介面型別

介面是指外部系統與系統之間以及內部各子系統之間的互動點。包括外部介面、內部介面,內部介面又包括:上層服務與下層服務介面、同級介面。

常見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/

abc123”,其中abc123就是這個博文的地址。而如果用POST,則這個地址會在提交後由伺服器告知客戶端。目前大部分部落格都是這樣的。顯然,PUT和POST用途是不一樣的。具體用哪個還取決於當前的業務場景。

  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方法更安全。