Restfull API 示例
阿新 • • 發佈:2019-01-10
什麼是Restfull API
Restfull API 從字面就可以知道,他是rest式的介面,所以就要先了解什麼是rest
rest 不是一個技術,也不是一個協議
rest 指的是一組架構約束條件和原則,提供了一個新的架構設計思路,滿足這些約束條件和原則的應用程式或設計就是 RESTful
在REST規則中,有兩個基礎概念:物件、行為
物件就是我們要操作的物件,例如新增使用者的操作,那麼物件就是user
行為有4種常用的:檢視、建立、編輯、刪除
rest的提出者很巧妙的利用http現有方法來對應這4種行為:
GET - 檢視
POST - 建立
PUT - 編輯
DELETE - 刪除
為什麼用Restfull API
例如常用的MVC結構中,前後端的融合還是比較緊密的,使用者訪問一個網址,例如 http://test.com/a.php,請求先發送到動態php處理,php中處理邏輯,然後使用頁面模板來輸出顯示給使用者
以前使用者主要就是用瀏覽器訪問,這樣的結構沒什麼問題,但現在移動客戶端越來越重要,顯然不能使用這個結構,需要為移動客戶端開發介面
RESTful API 就可以通過一套統一的介面為所有客戶端提供web服務,實現前後端分離
再比如在一個大型系統中,可能是多種開發語言一起工作,使用 RESTful API 就可以完全不關心開發語言,以標準的介面來協同工作
Restfull API是怎麼定義的
下面通過幾個示例瞭解下Restfull API的定義方式
(1)檢視所有任務
GET http://test.com/tasks
(2)新建一個任務
POST http://test.com/tasks
Data: title = Foobar
(3)根據ID檢視一個任務
GET http://test.com/tasks/123
(4)更新任務
PUT http://test.com/tasks/123
Data: title = New
(5)刪除任務
DELETE http://test.com/tasks/123
可以看到Restfull API的風格非常簡潔、統一、明確
例如檢視操作,用普通方式的話,定義方式是任意的,如:
http://test.com/listall_tasks
'listall_tasks' 就是隨意定義的,通過這個名字才可以看出是檢視全部的意思,如果開發人員用了一個沒有明確意義的名字,那就需要看文件或者程式碼才能知道含義了
Restfull API 從字面就可以知道,他是rest式的介面,所以就要先了解什麼是rest
rest 不是一個技術,也不是一個協議
rest 指的是一組架構約束條件和原則,提供了一個新的架構設計思路,滿足這些約束條件和原則的應用程式或設計就是 RESTful
在REST規則中,有兩個基礎概念:物件、行為
物件就是我們要操作的物件,例如新增使用者的操作,那麼物件就是user
行為有4種常用的:檢視、建立、編輯、刪除
rest的提出者很巧妙的利用http現有方法來對應這4種行為:
GET - 檢視
POST - 建立
PUT - 編輯
DELETE - 刪除
為什麼用Restfull API
例如常用的MVC結構中,前後端的融合還是比較緊密的,使用者訪問一個網址,例如 http://test.com/a.php,請求先發送到動態php處理,php中處理邏輯,然後使用頁面模板來輸出顯示給使用者
以前使用者主要就是用瀏覽器訪問,這樣的結構沒什麼問題,但現在移動客戶端越來越重要,顯然不能使用這個結構,需要為移動客戶端開發介面
RESTful API 就可以通過一套統一的介面為所有客戶端提供web服務,實現前後端分離
再比如在一個大型系統中,可能是多種開發語言一起工作,使用 RESTful API 就可以完全不關心開發語言,以標準的介面來協同工作
Restfull API是怎麼定義的
下面通過幾個示例瞭解下Restfull API的定義方式
(1)檢視所有任務
GET http://test.com/tasks
(2)新建一個任務
POST http://test.com/tasks
Data: title = Foobar
(3)根據ID檢視一個任務
GET http://test.com/tasks/123
(4)更新任務
PUT http://test.com/tasks/123
Data: title = New
(5)刪除任務
DELETE http://test.com/tasks/123
可以看到Restfull API的風格非常簡潔、統一、明確
例如檢視操作,用普通方式的話,定義方式是任意的,如:
http://test.com/listall_tasks
'listall_tasks' 就是隨意定義的,通過這個名字才可以看出是檢視全部的意思,如果開發人員用了一個沒有明確意義的名字,那就需要看文件或者程式碼才能知道含義了
而Restfull API 通過 GET 方法就知道是檢視操作,通過tasks就知道檢視的物件是什麼
@Controller @RequestMapping("/rest") public class RestController { @RequestMapping(value="/user/{id}",method=RequestMethod.GET) public String get(@PathVariable("id") Integer id){ System.out.println("get"+id); return "/hello"; } @RequestMapping(value="/user/{id}",method=RequestMethod.POST) public String post(@PathVariable("id") Integer id){ System.out.println("post"+id); return "/hello"; } @RequestMapping(value="/user/{id}",method=RequestMethod.PUT) public String put(@PathVariable("id") Integer id){ System.out.println("put"+id); return "/hello"; } @RequestMapping(value="/user/{id}",method=RequestMethod.DELETE) public String delete(@PathVariable("id") Integer id){ System.out.println("delete"+id); return "/hello"; } }