秒懂什么是REST和RESTful

Posted setsailgo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了秒懂什么是REST和RESTful相关的知识,希望对你有一定的参考价值。

REST风格的接口,这样的词汇总是出现在耳边,然后又没有完全的理解,您是不是有和我相同的疑问呢?那我们一起来一探究竟吧!

REST是Representational State Transfer
的首字母,翻译成中文就是表现层状态转移,但一般人是弄不懂它的具体含义的。

知乎有位大神Ivony解释的非常清楚:
用URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。


在设计web接口的时候,REST主要是用于定义接口名,接口名一般是用名词写,不用动词,那怎么表达“获取”或者“删除”或者“更新”这样的操作呢——用请求类型来区分。
比如,我们有一个friends接口,对于“朋友”我们有增删改查四种操作,怎么定义REST接口?
增加一个朋友,uri: generalcode.cn/v1/friends 接口类型:POST
删除一个朋友,uri: generalcode.cn/va/friends 接口类型:DELETE
修改一个朋友,uri: generalcode.cn/va/friends 接口类型:PUT
查找朋友,uri: generalcode.cn/va/friends 接口类型:GET


上面我们定义的四个接口就是符合REST协议的,请注意,这几个接口都没有动词,只有名词friends,都是通过Http请求的接口类型来判断是什么业务操作。


举个反例:generalcode.cn/va/deleteFriends 该接口用来表示删除朋友,这就是不符合REST协议的接口。


一般接口的返回值是JSON或者XML类型的,笔者在互联网的工作经验一般都是JSON类型的。


用HTTP Status Code传递Server的状态信息。比如最常用的 200 表示成功,500 表示Server内部错误,403表示Bad Request等。(反例:传统web开发返回的状态码一律都是200,其实不可取。)


那这种风格的接口有什么好处呢?

前后端分离。前端拿到数据只负责展示和渲染,不对数据做任何处理。

后端处理数据并以JSON格式传输出去,定义这样一套统一的接口,在web,iosandroid三端都可以用相同的接口,是不是很爽?!

 
















以上是关于秒懂什么是REST和RESTful的主要内容,如果未能解决你的问题,请参考以下文章

17-Django-Django REST framework-REST framework及RESTful简介

秒懂 Nginx,就看看这篇

抽象类和接口到底是什么垃圾——秒懂

Restful API官方文档

到底什么是 OAuth 2.0 ? 一文秒懂!

秒懂Hash算法:什么是Hash