python接口自動化(一)--什么是接口、接口優勢、類型(詳解)


簡介

  經常聽別人說接口測試,接口測試自動化,但是你對接口,有多少了解和認識,知道什么是接口嗎?它是用來做什么的,測試時候要注意什么?坦白的說,筆者之前也不是很清楚。接下來先看一下接口的定義。

定義 

       接口泛指實體把自己提供給外界的一種抽象化物(可以為另一實體),用以由內部操作分離出外部溝通方法,使其能被內部修改而不影響外界其他實體與其交互的方式。

  人類與電腦等信息機器或人類與程序之間的接口稱為用戶界面。電腦等信息機器硬件組件間的接口叫硬件接口。電腦等信息機器軟件組件間的接口叫軟件接口。

  在計算機中,接口是計算機系統中兩個獨立的部件進行信息交換的共享邊界。這種交換可以發生在計算機軟、硬件,外部設備或進行操作的人之間,也可以是它們的結合。

接口的優勢

  一、規范性

  接口就是規范,在整個系統設計中,涉及到很多層,為了使各個層之間調用透明話,你只需要知道接口,按照這個接口做你具體做的事情,就可以融合到整個系統中了。

  生活中的例子很多,例如:插頭、插座,有標准的規范告訴你插頭應該是幾個腳,插座是幾個孔等等,做插頭、插座的公司就是根據這個規范來做插頭、插座,而不需要做完一個插頭就跑遍全世界去試用一下這個插頭做的對不對。

  二、擴展性

  在項目開發過程中,由於客戶的需求經常變化,如果不采用接口,那么我們必須不停改寫現有的業務代碼。改寫代碼可能產生新的BUG,而且改寫代碼還會影響到調用該業務的類,可能全都需要修改,影響系統本身的穩定性。到最后,可能會出現代碼凌亂,不易讀懂,

  后接手的人無法讀懂代碼,系統的維護工作越來越重,最終可能導致項目失敗。

  三、接口在項目就是一個業務邏輯,面向接口編程就是先把客戶的業務提取出來,作為接口。業務具體實現通過該接口的實現類來完成。當客戶需求變化時,只需編寫該業務邏輯的新的實現類,不需要改寫現有代碼,減少對系統的影響。從而讓項目具有更大的擴展性。

常見的接口類型

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

  常見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型接口

格式:請求數參數寫在網址后面,用"?"連接,多個參數之間用"&"連接。如:https://api.douban.com/v2/book/search?q='',這是一個豆瓣查詢圖書信息的開發api,q='',單引號里就是查詢的參數,如查詢《小王子》這本書的信息,則q='小王子',使用postman工具來試驗一下,如下圖:

 

 

場景:get型接口用於獲取信息,多用於查詢數據,如列表查詢功能,點擊查詢按鈕就調用一個get接口,然后把信息返回出來

特點:1)請求數據量小,2)參數暴露於url地址中,故存在安全隱患

2)post型接口

說明:向指定資源位置提交數據(如提交表單、上傳文件)來進行請求,post請求可能會導致新資源的建立

場景:如注冊、上傳、發帖等功能,如用戶在豆瓣網站對某本書進行收藏、寫筆記、發表評論

特點:請求數據量大,安全性高

如豆瓣的發表評論的開放api,見下圖:

 

 

3)put型接口

說明:put請求用於向指定資源位置上傳最新內容

場景:如用戶在豆瓣網站修改對某本書的收藏、修改某篇筆記或修改評論

如豆瓣的修改評論的開放api,見下圖:

 

 

4)delete型接口

說明:請求服務器刪除請求里url所標識的資源

場景:如用戶在豆瓣網站取消對某本書的收藏、刪除某篇筆記或刪除評論

如豆瓣的刪除評論的開放api,見下圖:

 

不常見的接口類型(了解即可)

    不常見的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方法更安全。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM