1. 程式人生 > >Restfull API 示例

Restfull API 示例

什麼是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 通過 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";
    }
    
}