RESTful Web API--web標準

原文地址:http://www.cnblogs.com/artech/p/restful-web-api-01.htmlhtml

REST不是一個標準,而是一種軟件應用架構風格。web

若是說RPC是一種面向操做的架構風格,那麼REST即是一種面向資源的架構風格。json

web

  咱們所熟悉的web(World Wide Web、WWW、W3或者萬維網)實際上是一種利用HTTP協議獲取和操做網絡資源的方式。api

  咱們獲取的資源包括:傳統信息(文字圖片),多媒體信息(音頻視頻)緩存

  Web的核心:HTTP、超文本(Hypertext)和超媒體(Hypermedia)安全

    超文本和超媒體規範了網絡信息的表現形式,而HTTP則提供了網絡訪問的標準協議。服務器

HTTP

   TCP/IP與HTTP

  

 

    • TCP/IP是以IP和TCP協議爲核心的一整套網絡協議的總稱,因此有時候咱們也稱其爲TCP/IP協議簇。   
    • TCP/IP協議簇劃分爲如上圖所示的4個層次(應用層、傳輸層、網絡層和鏈路層),構成整個協議簇的各個子協議處於相應層次中。   
    • IP協議是一個無鏈接(Connectionless)的網絡協議,每次數據報的處理對它來講均是獨立的,所以IP協議也不能提供針對有序傳輸(數據接收的順序與發送的順序一致)的保證。
    • TCP是一個基於鏈接的協議,數據交換雙方在進行報文傳輸以前須要創建鏈接,報文傳輸結束以後須要關閉鏈接。這是一個雙工(Duplex)鏈接,數據交換的雙工都可以利用它向對方發送數據。
    • TCP利用「接收確認」和「超時重傳」機制確保了數據可以成功抵達目的地。
    • 每一個TCP報文段都具備一個16位的檢驗和(Checksum),因此接收方能夠根據它確認數據在傳輸過程當中是否被篡改。
    • TCP還提供了「流量控制」功能避免了雙方因緩存區大小不一致而致使報文丟失。
    • HTTP(Hypertext Transfer Protocol),全稱爲「超文本傳輸協議」,是TCP/IP協議簇的一部分。   
    • 因爲TCP協議是一個「可靠」的協議,HTTP天然也能提供可靠數據傳輸功能。
    • IP協議利用IP地址來定位數據報發送的目的地,而利用域名系統(DNS)能夠實現域名與IP地址之間的轉換。
    • TCP協議利用端口號標識應用程序,因此某個應用程序在使用TCP協議進行通訊的時候必須指定目標應用的IP地址(或者域名)和端口號。
    • HTTP默認採用的端口號爲80,而HTTPS(利用TLS/SSL爲HTTP提供傳輸安全保障)的默認端口號則爲443

   Web資源

     媒體類型

    • 不管是經過HTTP請求從Web服務器上獲取資源,仍是利用請求向服務器提交資源,響應或者請求的主體(Body)除了包含承載資源自己的數據以外,其報頭(Header)部分還應該包含表示數據形態的媒體類型。
    • 媒體類型又被稱爲MIME(Multipurpose Internet Mail Extension)類型,MIME是一個互聯網標準,它擴展了電子郵件標準,使其可以支持非ASCII字符、二進制格式附件等多種格式的郵件消息。
    • text/html:HTML格式的文檔。
    • text/xml(application/xml):XML格式的文本。
    • text/json(application/json): JSON格式的文本。
    • image/gif(image/jpeg、image/png):GIF(JPEG、PNG)格式的圖片。
    • audio/mp4(audio/mpeg、audio/vnd.wave):MP4(MPEG、WAVE)格式的音頻文件。
    • video/mp4(video/mpeg、video/quicktime):MP4(MPEG、QUICKTIME)格式的視頻文件。        

     URI、URL和URN

    • 採用URI來標識Web資源已經成爲了一種共識,實際上URI的全稱爲「統一資源標誌符(Uniform Resource Identifier)」。
    • 一個URL確定是一個URI,可是一個URI並不必定是一個URL,URL僅僅是URI的一種表現形式而已。
    • URI是Web資源的標誌符,因此只要求它具備「標識性」便可;
    • URL全稱爲「統一資源定位符(Uniform Resource Locator)」,因此除了標識性以外,它還具備定位的功能,用於描述Web資源所在的位置。
    • 一個完整的URL包含協議名稱、主機名稱(IP地址或者域名)、端口號、路徑和查詢字符串5個部分。      

   HTTP事務

    • HTTP是一種無狀態的網絡協議。
    • HTTP採用簡單的「請求/響應」消息交換模式,一次HTTP事務(Transaction)始於請求的發送,止於響應的接收。
    • 針對客戶端和Web服務器的屢次消息交換來講,每一個HTTP事務均是相互獨立的。  

    http方法

    • HTTP採用簡單的請求/響應模式的消息交換旨在實現針對某個Web資源的某種操做。
    • 針對資源的操做類型,不外乎CRUD(Create、Retrieve、Update和Delete)  
    • 一個HTTP請求除了利用URI標誌目標資源以外,還須要經過HTTP方法(HTTP Method或者HTTP Verb)指名針對資源的操做類型。
    • 經常使用的HTTP方法 包括GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE、CONNECTION和PATCH等    

    響應狀態碼

    • 100~199:信息狀態碼,表明請求已被接受,須要繼續處理。
    • 200~299:成功狀態碼,表明請求已成功被服務器接收、理解、並接受。
    • 300~399:重定向狀態碼,表明須要客戶端採起進一步的操做才能完成請求。
    • 400~499:客戶端錯誤狀態碼,表明了客戶端看起來可能發生了錯誤,妨礙了服務器的處理。
    • 500~599:服務器錯誤狀態碼,表明了服務器在處理請求的過程當中有錯誤或者異常狀態發生,也有多是服務器意識到以當前的軟硬件資源沒法完成對請求的處理。      

   HTTP報文

    • 客戶端和Web服務器在一次HTTP事務中交換的消息被稱爲HTTP報頭
    • 客戶端發送給服務器的請求消息被稱爲請求報文
    • 服務器返回給客戶端的響應消息被稱爲響應報頭
    • 請求報文和響應報頭採用純文本編碼,由一行行簡單的字符串組成
    • 一個完整的HTTP報文包括:起始行,報頭集合,主體內容
    • 起始行:表明HTTP報文的第一行文字,請求報文利用起始行表示採用的HTTP方法、請求URI和採用的HTTP版本,而響應報文的起始行在承載着HTTP版本和響應狀態碼等信息。
    • 報頭集合:HTTP報文的起始行後面能夠包含零個或者多個報頭字段。每一個報頭表現爲一個鍵/值對,鍵和值分別表示報頭名稱和報頭的值,二者經過冒號(「:」)進行分割。HTTP報文采用一個空行做爲報頭集合結束的標誌。
    • 主體內容:表明報頭集合結束標誌的空行以後就是HTTP報文的主體部分了。
    • 客戶端提交給服務器的數據通常置於請求報頭的主體,而響應報頭的主體也承載着服務器返回給客戶端的數據。
    • 不管是請求報文仍是響應報文,其主體部分均是能夠缺省的。      
相關文章
相關標籤/搜索