关于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的人。当我们自己满足于现状,满足于能够实现就好的时候,他能思考,能够有效的利用现有的条件,技术,不断进取。我想这也是我们这些程序员应该做的吧。
关于REST的一些想法的更多相关文章
- 细谈Slick(5)- 学习体会和将来实际应用的一些想法
通过一段时间的学习和了解以及前面几篇关于Slick的讨论后对Slick这个函数式数据库编程工具有了些具体的了解.回顾我学习Slick的目的,产生了许多想法,觉着应该从实际的工作应用角度把我对Slick ...
- 关于纠正 C/C++ 之前在函输内改变 变量的一个错误想法。
再这之前,我曾认为,一个变量只要定义为全局变量后,即使把它以传参的方式传进去一个函数内,也能改变它的值 事实证明,这一想法是错的. 下面我用代码说明,具体注释将写在里面 #include<std ...
- 制作QQ空间的一些想法
新的项目开始了,这一次是做一个网站类似于QQ空间那样的,基本功能比如说写日志,说说之类的都要有(说说是要有楼中楼嵌套的,应该能够上传图片),还要可以修改个人信息.登录注册之类的更不用说了,还要有一定的 ...
- 关于小组所要做的APP的想法
关于小组所要做的app,我们敲定下来是做关于在线做题的app,但是,纯粹的做题目的app我认为并没有什么大的吸引力,尤其是拿手机做题.所以,我们考虑准备在以下几个方面做功夫以增加吸引力.第一,我们的题 ...
- 大三CS狗一点想法
本文非技术文 十点半游戏的代码大概完成了1/3,想到今晚提早验收完汇编实验,还是副院长亲自验的,似乎很看好我的样子,然后问我的方向,导师和参加的项目.聊了几句后结束了对话,不禁又引发了我的一些思考. ...
- 系统架构:Web应用架构的新趋势---前端和后端分离的一点想法
最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前的b/s架构,其实b/s架构就是web应用开发,对于这样的架构我们现 ...
- 关于移动开发的一些想法和认识--Android和iOS
微信公众账号很久没更新了,发一点自己最近的想法和内容. 之前和朋友做了一个项目,现在在跟一些风投,大公司里面的几家在谈合作和投资的事宜,从这个过程中也了解到了一些信息. 关于移动平台的应用开发与游戏开 ...
- js中的原型、继承的一些想法
最近看到一个别人写的js类库,突然对js中的原型及继承产生了一些想法,之前也看过其中的一些内容,但是总不是很清晰,这几天利用空闲时间,对这块理解了一下,感觉还是有不通之处,思路上没那么条理,仅作为分享 ...
- 使用git的分支功能实现定制功能摘取与组合的想法
前言,这个想法应该是git比较通用的做法,只是我还没用过,所以把自己的想法记录在这里,督促自己以后按这个方式执行. 我们公司现在面临一个问题, 就是客户的定制需求很多,很杂,其中坑爹需求很多. 我还没 ...
- 《Invert》开发日志03:一些想法
本来标题想写“详细设计”,但是由于独立游戏开发有很强的探索性,最终项目一定是经过原型调整迭代而来的,所以在实际效果出来之前把设计做得太细并没有太大意义,现在只能先陈列目前的一些想法,不能定义“它是什么 ...
随机推荐
- Java 8 default 函数
我们知道在java8之前 ,一个类实现一个接口需要实现接口所有的方法, 但是这样会导致一个问题,当一个接口有很多的实现类的时候,修改这个接口就变成了一个非常麻烦的事,需要修改这个接口的所有实现类 不过 ...
- 微信小程序设计指南
微信小程序设计指南 · 小程序 https://developers.weixin.qq.com/miniprogram/design/index.html
- js实现网页中的"运行代码"功能
<!DOCTYPE html> <html> <head> <meta charset='utf8' /> <title>网页中的运行代码功 ...
- SQL Server分区表,能否按照多个列作为分区函数的分区依据(转载)
问: Hi, I have a table workcachedetail with 40 million rows which has 8 columns.We decided to partiti ...
- PAT 甲级 1104. Sum of Number Segments (20) 【数学】
题目链接 https://www.patest.cn/contests/pat-a-practise/1104 思路 最容易想到的一个思路就是 遍历一下所有组合 加一遍 但 时间复杂度 太大 会超时 ...
- iOS开发中集成Reveal
[转]http://blog.devzeng.com/blog/ios-reveal-integrating.html 配置方式一简介有效. Reveal 是一个界面调试工具.使用Reveal,我们可 ...
- mini2440 uboot烧写uImage
mini2440下烧写u-boot后,就可以用u-boot烧写linux内核了. 安装mkimage工具: apt-get install u-boot-tools 解压缩官方mini2440 lin ...
- Could not find JSON in http://updates.jenkins-ci.org/update-center.json?id=default&version=2.7.4
14-Sep-2016 21:43:58.241 INFO [Download metadata thread] hudson.model.AsyncPeriodicWork$1.run Finish ...
- centos6.3 安装python2.7.3
现在比较流行python2.7版本,centos6.3的默认版本是2.6.6,所以需要安装下2.7版本 1.下载安装python2.7 #wget http://www.python.org/ftp/ ...
- h5打电话发短信写邮件怎么实现
// 一.打电话<a href="tel:0755-10086">打电话给:0755-10086</a> // 二.发短信,winphone系统无效< ...