Web發展
一、API
程序硬件接口(Application Programming Interface),是預先定義好的邏輯函數,軟件系統不同組成部分銜接的約定,直接調用函數,無序訪問代碼細節,分為SDK和Web應用接口兩類
SDK:B程序部分功能直接打包給A程序,A程序可直接使用,如java jar包
web應用接口:B程序對外提供訪問路徑(入口),A程序按照約定好的訪問方式訪問,如具有http協議請求的訪問
例子:快遞單號查詢(底層發送請求,根據API提供的訪問路徑)->對應到從入庫到簽收的流水記錄信息(response一般是Json信息)
二、Web發展階段
靜態內容:html靜態文檔組成,用于研究
CGI階段:增加了編程API,提供動態變化內容
腳本語言階段:網站內容的興起,把相關的圖片文件按照一些規則組合在一起,如PHP等服務器端
瘦客戶端階段:MVC,前后端分離,前端只做展示,后端做數據處理
富客戶端階段:外表美觀JS技術,不僅僅是簡單的頁面拼接,如古早的easyUI,extjsUI等后端管理,以及現在的bootstrapUI、layUI、elementUI等優雅的后端管理界面風格UI
移動Web應用階段(現在):因為現在手機不離手,所以出現大量面向移動設備(手機、平板)的應用開發技術,如基于HTML5的開發技術
三、開發模式發展
傳統開發模式:一個服務器,前后端嚴重耦合,后端人還得學JS和html,一旦后端換語言,前端也要重新開發
前后端分離模式(現在):兩個服務器(前端服務器【純靜態資源】,接口服務器【接收、處理、響應請求,全是數據操作,沒有涉及頁面】);瀏覽器發靜態頁面請求給前端服務器,前端ajax異步列表請求到接口服務器,接口服務器響應JSON格式數組數據給前端服務器,前端服務器將要響應回的單純的頁面(list.html),將數據通過JS/vue/jquery語言渲染到前端頁面,進行頁面數據組合。前端不管是什么形式,不管是小程序還是APP,只要能正確發送請求到接口,就都能取到對應數據
RESTful風格接口設計
存在原因:人們越來越依賴手機,客戶端可能是APP或者小程序,服務器端要提供一套統一的API接口,使得不管是APP還是小程序形式的客戶端都能基于相同的規則和協議就能調用API接口獲得預期數據
如同樣的路徑(添加員工):最后的子路徑A員工設定的是add,B員工設定的是xinzeng(英文不好)
優雅統一API方法:遵循rest規范,因為比較簡單易讀,滿足rest約束條件和原則的應用程序設計就是RESTful應用
一、約束規范
傳統模式
@Controller:容器管理
@RequestMapping(不管什么樣的請求方式都能請求)后面跟上要訪問的路徑(見名知意)
rest風格
1、路徑:由當前接口操作資源(rstful眼中一切都是資源,每個資源有唯一的定位符URI【圖片、網頁、路徑都是資源,對應URI就是請求的路徑】);資源不只有一個(如員工有很多個員工,,所以資源的名稱采用復數如employees),@RequestMapping("/employees"),具體是哪個員工由傳入的參數決定
2、請求方式(不同請求方式對應不同的操作請求):
GET---查詢(從服務器取資源);POST---在服務器新建一個資源;PUT---更新資源(更新整個對象);PATCH---更新資源(更新個別屬性);DELETE---刪除資源
傳統路徑見名知意=restful路徑+請求方式(POST對應add添加)
例:GET/zoos:列出所有動物園;GET/zoos/{id}:列出指定動物園信息;
3、請求參數---由需求決定
4、請求響應(數據返回的格式)---一般是json格式
二、拓展
HTTP響應碼
200---響應成功;400---請求參數出錯;401/403---用戶不能訪問(401是沒權限,403是有權限但被禁止);404---請求針對的是不存在的記錄;500---服務器發生錯誤,用戶無法判斷請求是否成功
資源表現形式
accept:客戶端期望返回的數據類型(對服務器端返回的數據類型作限制)
content-type:說明帶過去和響應回來的數據都是什么格式
?