美文网首页
RESTful是什么

RESTful是什么

作者: 蹙眉大傻 | 来源:发表于2017-11-09 15:45 被阅读0次

    在程序猿DD Spring Boot基础教程的开山篇《基础项目构建,引入Web模块,完成一个简单的RESTful API》中,RESTful 是什么呢?

    那么先百度一下:一种软件构架风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更加简洁,更有层次,更用以实现缓存等机制。

    是不是一头雾水,百度百科中对REST以及RESTful有非常理论的介绍,不过虽然耐着性子看完了,仍然不知所云。好在知乎有《怎样用通俗的语言解释REST,以及RESTful?》。

    那么本文将对答者的回答自行梳理一下:

        要了解REST,首先需要了解API(Application Programming Interface,应用程序编程接口)。什么是API呢?首先它的定义是一个接口,举个形象的例子来说,就是一个公司比如腾讯,他们对自己项目封装,提供一个API,然后我们或者一些小公司可以通过这些API,对封装的这个项目进行交互。通过这个渠道打到我们的目的。

        了解了API,那么REST是什么呢?他是一种构架风格,腾讯这类公司要遵循这种风格建立API。那么REST的具体风格是什么呢?REST(Representational State Transfer)(表现层状态转移)。又是一头雾水,什么是表现层状态转移呢?

        这里我们要了解一下Web,因为REST是基于Web应用的。Web:分布式信息系统为超文本文件和其他对象(资源)提供访问入口。资源是Web构架的关键点,当资源与Web交互时,它需要3个操作,识别(identify),表示(represent),交互(interact with),通过这三个操作,又引入了3个概念uri(统一资源标识符包括url和urn)识别资源;representation(例如html,xml,视频,图片)表示资源;通过协议(包括http,ftp等)与资源进行交互。

      如果我们想将一个资源文件显现出来,就要通过uri进行暴露。uri的设计只是负责把资源通过合理的方式暴露出来。对资源没有任何操作,操作是通过http动词来实现的,所以REST通过URI暴露资源时,会强调不要再URI中出现动词。

      比如:左边的是错误的设计,右边的是正确的

    GET     /rest/api/getDogs    ——> 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风格,uri只负责准确无误的暴露资源,而getDogs、addDogs已经包含了对资源的操作,这是不对的。而右边是通过具体的Http动词来体现。所以很容易理解REST很好利用了HTTP本来的特性,而不是只是将HTTP作为传输层这么简单。

    总结一下:URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。

    相关文章

      网友评论

          本文标题:RESTful是什么

          本文链接:https://www.haomeiwen.com/subject/fjdemxtx.html