关于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);


    }

 

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