关于REST的一些想法
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的人。当我们自己满足于现状,满足于能够实现就好的时候,他能思考,能够有效的利用现有的条件,技术,不断进取。我想这也是我们这些程序员应该做的吧。
最新文章
- 关于Android中new Notification
- Django Restful Framework (二): ModelSerializer
- AppStore下载失败使用已购页面再试一次解决方法
- URAL 1353 Milliard Vasya's Function(DP)
- [Javascript] Advanced Function Scope
- Entity Framework技巧系列之三 - Tip 9 – 12
- CLR Via 第一 章 知识点整理(2)程序集和CLR的启动
- 一文讲透静电放电(ESD)保护(转发)
- python面向对象之静态属性/静态方法/类方法/组合
- BSOJ3760||洛谷P1453 城市环路 题解
- ③JSP经典回顾
- Spring框架最简单的定时任务调用
- poj 3734 方块涂色 求红色 绿色方块都为偶数的方案数 (矩阵快速幂)
- 安装phantomjs(Ubuntu版本 MacOS版本)
- 内存数据库-H2简介与实践
- go编译
- Android立刻终止一个线程
- POJ 1062 最短路Dijstra
- C#实现DevExpress本地化实例详解
- java中匿名内部类总结
热门文章
- struts2_6_多个struts配置文件的应用
- Android Thread.UncaughtExceptionHandler异常消息捕获
- delphi Base64编码/解码及数据压缩/解压知识
- Python 深入剖析SocketServer模块(一)(V2.7.11)
- EasyNVR无插件流媒体服务器前端技术防止重复提交的方法
- thinkphp5 (最棒的php开源框架)
- 【题解】P3129高低卡(白金)High Card Low Card
- JSP中的内容布局
- imagecopyresampled()改变图片大小后质量要比imagecopyresized()高。
- [IR课程笔记]Hyperlink-Induced Topic Search(HITS)