REST and RESTful

最近入手了REST,谈谈自己的体会。

所谓REST, 我觉得是一种网址的设计风格。过去我们用Struts 或Spring MVC 时从来没有考虑过URL的设计风格。所有的URL大体都是 XXX/?name=Mike&age=12 这种样式的,并且时间长了都觉得这是理所当然的。要不然你说网址要设计成什么样?



好吧,如果我没记错的话,在Java Servlet 中有 doGet ,doPost, doDelete, doPut 等方法。可是我自己从来没用过除了doGet之外的任何方法。(doPost我让他调用doGet方法) 那么其实doDelete 等方法就浪费了。那么当初为什么要有这种看似多余的API呢?



其实应该追溯到设计网站协议的时候。估计那时候的专家想的很好:我应该有4个方法,分别表示增、删、改、查。可是由于网站实际的发展制约了API的运用。一个最简单的form 可是他只能有GET 和POST 两种方法联系后台,那么我怎么可能用到doDelete和doPut方法呢?

后来随着技术的发展,我想可能是Ajax方法吧,我们可以调用到doDelete和doPut方法了。(或者说这个时候人们才发现,WC,原来以前的大牛给了我们足够的扩展空间,只是我们没有发现而已。)于是就有人提出了REST风格的API设计。中心思想是,网络中任何一种Data都是Resource。(好吧,其实我也不知怎么解释^^)应该就是任何一个你想从网络中获取的东西都是资源,这些资源本身包含了对自身的CRUD的API---通过doPost,doGet,doDelete,doPut方法。我们想删除信息不是通过类似于XXXX/?action=delete&id=1
之类的URL来实现了。 我们是用 delete 方式调用 /post/id/1 的URL来实现的;我们想查询不是通过XXXX/?action=query&id=1来实现的,而是通过 get 方式调用 /post/id/1 的URL来实现的。要修改,通过 put方式调用 /post/id/1 就可以了。要添加了,通过 post 方式调用 /post 就行了啊。可以发现REST最大调用了网络API的潜能。

更近一步,可以这么看,REST实际上包含了封装的概念。在Java 中我们有封装的概念,一个类可以把对自己的一些操作封装在自己里面,这样就可以一个类专注于同一类事情。

而REST我觉得也是一样的。 我们对网络上数据的操作无非就是CRUD,那么我们完全可以把这四个操作封装在资源自己里面。调用了相应的API就是执行了某些操作。



REST说他先进么,我觉得没有。技术上是个人都能够实现。但是我很佩服提出这个REST的人。当我们自己满足于现状,满足于能够实现就好的时候,他能思考,能够有效的利用现有的条件,技术,不断进取。我想这也是我们这些程序员应该做的吧。

最新文章

  1. 关于Android中new Notification
  2. Django Restful Framework (二): ModelSerializer
  3. AppStore下载失败使用已购页面再试一次解决方法
  4. URAL 1353 Milliard Vasya's Function(DP)
  5. [Javascript] Advanced Function Scope
  6. Entity Framework技巧系列之三 - Tip 9 – 12
  7. CLR Via 第一 章 知识点整理(2)程序集和CLR的启动
  8. 一文讲透静电放电(ESD)保护(转发)
  9. python面向对象之静态属性/静态方法/类方法/组合
  10. BSOJ3760||洛谷P1453 城市环路 题解
  11. ③JSP经典回顾
  12. Spring框架最简单的定时任务调用
  13. poj 3734 方块涂色 求红色 绿色方块都为偶数的方案数 (矩阵快速幂)
  14. 安装phantomjs(Ubuntu版本 MacOS版本)
  15. 内存数据库-H2简介与实践
  16. go编译
  17. Android立刻终止一个线程
  18. POJ 1062 最短路Dijstra
  19. C#实现DevExpress本地化实例详解
  20. java中匿名内部类总结

热门文章

  1. struts2_6_多个struts配置文件的应用
  2. Android Thread.UncaughtExceptionHandler异常消息捕获
  3. delphi Base64编码/解码及数据压缩/解压知识
  4. Python 深入剖析SocketServer模块(一)(V2.7.11)
  5. EasyNVR无插件流媒体服务器前端技术防止重复提交的方法
  6. thinkphp5 (最棒的php开源框架)
  7. 【题解】P3129高低卡(白金)High Card Low Card
  8. JSP中的内容布局
  9. imagecopyresampled()改变图片大小后质量要比imagecopyresized()高。
  10. [IR课程笔记]Hyperlink-Induced Topic Search(HITS)