1.2.1 接口的定義
? ? ? 兩個不同的系統(tǒng)或者一個系統(tǒng)中有兩個不同的功能秉继,它們之間相互連接的部分就稱為接口。
? ? ? 應用程序編程接口(全名:Application Programma Interface辑鲤,簡稱:API)是一組定義杠茬、程序及協(xié)議的集合,API可實現(xiàn)計算機軟件之間的相互通信宁赤。API的主要功能是提供通用功能集栓票。程序員通過使用API函數(shù)開發(fā)應用程序走贪,從而可以避免編寫無用程序,減輕編程任務挚躯。
? ? ? 前后端分離是近年來Web應用開發(fā)的一個發(fā)展趨勢擦秽。這種模式具有以下優(yōu)勢:
? ? ? a.后端工程師不需要精通前端技術(shù)(如HTML、CSS缩搅、JS)触幼,只專注于數(shù)據(jù)的處理置谦,對外提供API即可。
? ? ? b.前端工程師的專業(yè)性越來越強媒峡,其通過API獲取數(shù)據(jù)谅阿,并專注于頁面設計酬滤。
? ? ? c.前后端分離可擴大接口的應用范圍盯串,開發(fā)的接口可以應用到Web頁面上戒良,也可以應用到App上。
1.2.2 接口的分類
? ? ? 依照所遵循的協(xié)議不同译打,常見的接口可以分為以下3類拇颅。
? ? ? a.HTTP 接口
? ? ? 它是基于超文本傳輸協(xié)議開發(fā)的接口,但并不能排除沒有使用其他協(xié)議韵洋。
? ? ? b.Web Server 接口
? ? ? 它是系統(tǒng)對外的接口搪缨,比如你要從別的網(wǎng)站或服務器上獲取資源鸵熟,一般來說,別人不會把數(shù)據(jù)庫共享給你痹届,他們會提供一個寫好的方法打月,讓你用來獲取數(shù)據(jù),你是用他們寫好的方法就能引用他們提供的接口柴淘,從而達到同步數(shù)據(jù)的目的秘通。
? ? ? c.RESTful 接口
? ? ? 簡稱REST肺稀,其描述了一個架構(gòu)樣式的網(wǎng)絡系統(tǒng),核心是面向資源炸茧。REST專門針對網(wǎng)絡應用設計和開發(fā)方式稿静,降低開發(fā)的復雜性,提高系統(tǒng)的可伸縮性控漠。
1.2.3 HTTP協(xié)議
? ? ? HTTP的主要特點可以概括為以下幾點盐捷。
? ? ? a.支持客戶端/服務器模式默勾。
? ? ? b.無連接。限制每次連接滞诺,使其只處理一個請求环疼。服務器處理完客戶端的請求炫隶,并收到客戶端的應答后,即斷開連接煞檩。采用這種方式可以節(jié)省傳輸時間望门。
? ? ? c.無狀態(tài)。HTTP是無狀態(tài)協(xié)議桐早,無狀態(tài)是指協(xié)議對于事務處理沒有記憶能力厨剪。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息祷膳,則必須重新上傳,這樣可能導致每次連接傳送的數(shù)據(jù)量增大搀军,如果服務器不需要前面的信息,則應答就會比較快焚刺。
1.2.4 HTTP請求
? ? ? HTTP請求包含四個部分门烂,分別是統(tǒng)一資源定位符屯远、請求方法(Method)、請求頭(Header)和請求體(Body)坡脐。
1咖气、統(tǒng)一資源定位符
? ? ? 統(tǒng)一資源定位符(Uniform Resource Locator)適用于完整地描述互聯(lián)網(wǎng)上網(wǎng)頁和其他資源地址的一種表示方法崩溪。URL給資源的位置提供一種抽象的表示方法,并用這種方法給資源定位觉既。URL相當于文件名在網(wǎng)絡范圍的擴展乳幸。
? ? ? URL的一般形式為:
? ? ? <協(xié)議>://<主機>:<端口>/<路徑>/<文件名>
? ? ? <協(xié)議> 指出獲取該互聯(lián)網(wǎng)資源所使用的的協(xié)議粹断。HTTP請求使用的是HTTP協(xié)議,除此之外希柿,還有文件傳輸協(xié)議(File Transfer Protocol养筒,F(xiàn)TP)晕粪。
? ? ? 在<協(xié)議>后面必須加? “ :// ” ,不能省略.
? ? ? <主機> 指出萬維網(wǎng)文檔是在哪一個主機上(可以給出域名装悲,也可以給出IP地址)。
? ? ? 在<主機>后面必須加? “ : ” 盆顾,不能省略.
? ? ? <端口> 為服務器監(jiān)聽的端口,HTTP默認為80端口奈懒,F(xiàn)TP默認為21端口磷杏。
? ? ? <路徑>和<文件名>進一步給出資源在服務器上的位置,但是他們的名稱是虛擬的慈格,和服務器上的物理名稱可能不同浴捆。
? ? ? 對于動態(tài)頁面稿械,用戶通常還需要給服務器提供訪問動態(tài)網(wǎng)頁的參數(shù)。因此页眯,URL后面還可以跟上一個英文冒號厢呵,問號的后面以“ 參數(shù)名稱 = 參數(shù)值 ”的形式給出多組參數(shù)襟铭,每一組參數(shù)之間用“ & ”分割,稱之為查詢串(Query String)道批。具體形式為
? ? ? <協(xié)議>://<主機>:<端口>/<路徑>/<文件名>?<參數(shù)1>=<值1>&<參數(shù)2>=<值2>
? ? ? https://www.baidu.com/s?ie=UTF-8&wd=postman
2隆豹、Method
? ? ? ? HTTP定義了與服務器交互的不同方法(Method)茅逮,基本方法有四種,分別是GET碉考、POST、PUT和DELETE侯谁⌒拷觯可以這樣理解:URL地址用戶描述一個網(wǎng)絡上的資源,而HTTP中的GET墙贱、POST热芹、PUT和DELETE方法對應著這個方法的“查”、“改”惨撇、“增”伊脓、“刪”操作,即GET一般用戶獲取魁衙、查詢資源信息报腔,而POST一般用戶更新資源信息等。
? ? ? 除上述四種方法以外纯蛾,其他的方法在接口測試中遇到的概率很小,即便遇到了祷蝌,也可以借助Postman工具構(gòu)造出相應請求茅撞。
GET方法和POST方法有什么區(qū)別呢?
? ? a.提交數(shù)據(jù)的方式不同巨朦。
? ? b.傳輸數(shù)據(jù)的大小不同米丘。
? ? c.安全性不同。
3糊啡、Header 和 Body
? ? HTTP報文是面向文本的拄查。HTTP請求報文由4個部分組成,分別是:
? ? ? ? ? ? ? ? a. <request-line> 請求行棚蓄;
? ? ? ? ? ? ? ? b. <headers> 請求頭堕扶;
? ? ? ? ? ? ? ? c. <blank line> 空行;
? ? ? ? ? ? ? ? d. <request-body> 請求數(shù)據(jù)梭依。
1.2.5 HTTP相應
? ? ? ? 將HTTP請求發(fā)送到服務器后稍算,服務器會給出相應的應答,服務器返回的應答消息成為HTTP響應役拴。
1糊探、HTTP響應報文
? ? ? ? HTTP響應報文同樣也是由4個部分組成,與請求報文的格式非常相似,具體格式為:
? ? ? ? ? ? ? ? a. <status-line> 狀態(tài)行科平;
? ? ? ? ? ? ? ? b. <headers> 消息報頭褥紫;
? ? ? ? ? ? ? ? c. <blank line> 空行;
? ? ? ? ? ? ? ? d. <response-body> 響應正文瞪慧。
? ? ? ? 響應報文和請求報文的區(qū)別在于髓考,第一行中用狀態(tài)信息代替了請求信息。狀態(tài)行通過提供一個狀態(tài)碼來說明所請求的資源情況弃酌。
? ? ? ? 狀態(tài)行格式為:HTTP - version Status - Code Reason-Phrase CRLF? 氨菇,其中:
? ? ? ? ? ? ? ? a. HTTP - version 表示服務器HTTP的版本;
? ? ? ? ? ? ? ? b. Status - Code 表示服務器返回的響應狀態(tài)碼矢腻;
? ? ? ? ? ? ? ? c. Reason-Phrase 表示狀態(tài)碼的文本描述门驾;
? ? ? ? ? ? ? ? d. CRLF 表示一個回車符和換行符。
? ? ? ? 狀態(tài)碼由3位數(shù)字組成多柑,第一位數(shù)字定義了響應的列表,它有如下5種取值可能楣责。
? ? ? ? ? ? ? ? a. 1 X X :指示信息竣灌,表示請求已接收,繼續(xù)處理秆麸。
? ? ? ? ? ? ? ? b. 2 X X :成功初嘹,表示請求已被成功接收、理解和接受沮趣。
? ? ? ? ? ? ? ? c. 3 X X :重定向屯烦,要完成請求必須進行更進一步的操作。
? ? ? ? ? ? ? ? d. 4 X X :客戶端錯誤房铭,請求有語法錯誤或請求無法實現(xiàn)驻龟。
? ? ? ? ? ? ? ? e. 5 X X :服務端錯誤,服務器未能處理合法的請求缸匪。
? ? ? ? 以下對常見的狀態(tài)代碼和狀態(tài)描述進行說明翁狐。
? ? ? ? ? ? ? ? a. 200 OK:客戶端請求成功。
? ? ? ? ? ? ? ? b. 400 Bad Request:客戶端請求有語法錯誤凌蔬,不能被服務端所理解露懒。
? ? ? ? ? ? ? ? c. 401Unauthorized:請求未經(jīng)授權(quán)。
? ? ? ? ? ? ? ? d. 403 Forbidden:服務器收到正確請求砂心,但是拒絕提供服務懈词。
? ? ? ? ? ? ? ? e. 404 Not Found:請求資源不存在,如輸入了錯誤的URL辩诞。
? ? ? ? ? ? ? ? f. 500 Internal Server Error:服務器發(fā)生了不可預期的錯誤坎弯。
? ? ? ? ? ? ? ? g. 503 Server Unavailable:服務器當前不能處理客戶端的請求,一段時間后可能恢復正常。
2荞怒、JSON
????????a. JS對象標記的定義
????????JS對象標記是一種輕量級的數(shù)據(jù)交換格式洒琢。它基于ECMAScript的子集,采用完全獨立于編程語言的文本格式來存儲和表示數(shù)據(jù)褐桌。簡潔和清晰的數(shù)據(jù)結(jié)構(gòu)使得JSON成為理想的數(shù)據(jù)交換語言衰抑,其易于閱讀和編寫,同時也易于機器解析和生成荧嵌,并能有效地提升網(wǎng)絡傳輸效率呛踊。因此,HTTP接口響應一般為JSON格式啦撮。
????????b. JSON語法規(guī)則
????????JSON語法規(guī)則包括用大括號保存對象谭网、用鍵值對表示對象、用逗號分割每個對象赃春、用中括號保存數(shù)組愉择。
????????{"name":"michael","age":"23","gender":"male"}