關於Rest風格的使用和理解

 目錄

Rest風格的請求

Rest風格的響應


REST風格的接口,這樣的詞彙總是出現在耳邊,然後又沒有完全的理解,您是不是有和我相同的疑問呢?那我們一起來一探究竟吧!其實就是用URL定位資源,用HTTP描述操作。

URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操作

返回值是JSON或者XML類型的( code +message+ timeStamp)

Rest風格的請求

在設計web接口的時候,REST主要是用於定義接口名,接口名一般是用名次寫,不用動詞,那怎麼表達“獲取”或者“刪除”或者“更新”這樣的操作呢——用請求類型來區分。

我們有一個friends接口,對於“朋友”我們有增刪改查四種操作,怎麼定義REST接口?

增加一個朋友,uri: didixingwei.cn/va/friends 接口類型:POST

刪除一個朋友,uri: didixingwei.cn/va/friends 接口類型:DELETE

修改一個朋友,uri: didixingwei.cn/va/friends 接口類型:PUT

查找朋友,uri: didixingwei.cn/va/friends 接口類型:GET

上面我們定義的四個接口就是符合REST協議的,請注意,這幾個接口都沒有動詞,只有名詞friends,都是通過Http請求的接口類型來判斷是什麼業務操作。

舉個反例:didixingwei.cn/va/deleteFriends 該接口用來表示刪除朋友,這就是不符合REST協議的接口。

 

Rest風格的響應

一般接口的返回值是JSON或者XML類型的,我一般都是用JSON類型的。

 

用HTTP Status Code傳遞Server的狀態信息。比如最常用的 200 表示成功,500 表示Server內部錯誤,403表示Bad Request等。(反例:傳統web開發返回的狀態碼一律都是200,其實不可取。)

那這種風格的接口有什麼好處呢?前後端分離。前端拿到數據只負責展示和渲染,不對數據做任何處理。後端處理數據並以JSON格式傳輸出去,定義這樣一套統一的接口,在web,ios,android三端都可以用相同的接口,是不是很爽?!

 

可以看看博主的(自定義異常(通用異常處理器 返回rest風格)) 和(HTTP請求返回code意義

@GetMapping("list/ids")
    public ResponseEntity<List<String>> queryNameByIds(@RequestParam("ids") List<Long> ids) {
        List<String> list = this.categoryService.queryNameByIds(ids);
        if (list == null || list.size() < 1) {
            //找不到就是404咯
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
        
        //返回200
        return ResponseEntity.ok(list);


    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章