用了那么久的HTTP网络协议,今天才关注到它的设计思想,REST(Resource Representational State Transfer)。REST是面向资源的(通过URI进行暴露)。
一、REST解释:
名词解释:资源在网络中以某种表现形式进行状态转移
如何理解:Resource:资源,即数据。比如商品列表,朋友等;Representational:某种表现形式,比如用JSON,XML、JPEG等;State Transfer:状态变化。通过HTTP动词实现。
二、REST是面向资源的理解:
URI 的设计只要负责把资源通过合理方式暴露出来就可以了。对资源的操作与它无关,操作是通过 HTTP动词来体现,所以REST 通过 URI 暴露资源时,会强调不要在 URI 中出现动词。例如:
通常情况下URI设计: GET /rest/api/getDogs REST设计概念下:
REST GET /rest/api/dogs (获取所有小狗狗 )
GET /rest/api/addDogs POST /rest/api/dogs (添加一个小狗狗)
GET /rest/api/editDogs/:dog_id PUT /rest/api/dogs/:dog_id (修改一个小狗狗 )
GET /rest/api/deleteDogs/:dog_id DELETE /rest/api/dogs/:dog_id (删除一个小狗狗)
从上面的例子对比,我相信能够很明显的看出来,REST强调使用HTTP本身定义来描述行为,而URI只描述资源,这个就是REST风格。引用一句话描述就是:
三、RESTful风格设计
看Url就知道要什么:URL简单用于描述资源
看http method就知道干什么:使用http api method明白操作
看http status code就知道结果如何:通过返回码知道成功与否,而不是把状态掺杂到所需的资源当中
在实际使用当中,很多开发设计者,实际已经习惯于把URI复杂化了,如上述例子/rest/api/addDogs ,这个里面描述了行为,实际http的post访问方式足以表现用户使用这个URI的意图,但是在纷繁复杂的应用场景中,RESTful设计使用起来非常的困难,前行中不停地探究吧,本文旨在理解REST到底是啥就足够了
参考:
https://blog.csdn.net/qq_21383435/article/details/80032375