关于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:一些想法
本来标题想写“详细设计”,但是由于独立游戏开发有很强的探索性,最终项目一定是经过原型调整迭代而来的,所以在实际效果出来之前把设计做得太细并没有太大意义,现在只能先陈列目前的一些想法,不能定义“它是什么 ...
随机推荐
- Drcom账户管理Server端解说
https://www.github.com/xiyouMc 首先今天要讲的是针对Drcom查询账户URL的解析和抓取数据. Drcom是大学生宿舍上网普遍使用的联网client,然而对于自己账 ...
- 【BZOJ4012】[HNOI2015]开店 动态树分治+二分
[BZOJ4012][HNOI2015]开店 Description 风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到人生哲学.最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点 ...
- android菜鸟学习笔记11----Intent的两点补充
关于Intent的两点补充: 1.隐式Intent启动组件,会有一个Intent解析的过程,若找不到能够处理该Intent的组件,程序就会异常终止.一个合理的做法是,在使用Intent实例启动组件如: ...
- 2017-2018-1 20179209《Linux内核原理与分析》第五周作业
一.实验:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 环境说明 实验环境为 Ubuntu16.10 和 实验楼环境. 选择39号系统调用实验.39号系统调用为mkdir系统调用. ...
- 【题解】P4886快递员
[题解]P4886 快递员 淀粉质好题!!!加深了我对点分治的理解.最近分治学了好多啊. 题目大意 给定你一颗有边权的树,再给你\(m\)和点对,请你在树上选出来一个点,使得所有点对到这个点的距离的最 ...
- 列举你了解的Python较其他语言的优势
1.简单易学 2.开发速度快 3.拥有最成熟的程序包资源库(第三方库)
- 利用socket.io实现多人聊天室(基于Nodejs)
socket.io简单介绍 在Html5中存在着这种一个新特性.引入了websocket,关于websocket的内部实现原理能够看这篇文章.这篇文章讲述了websocket无到有,依据协议,分析数据 ...
- POJ - 3984 迷宫问题 【BFS】
题目链接 http://poj.org/problem?id=3984 思路 因为要找最短路 用BFS 而且 每一次 往下一层搜 要记录当前状态 之前走的步的坐标 最后 找到最短路后 输出坐标就可以了 ...
- pkg-config设置
pkg-config在一些源码管理中会被使用到. 介绍 上网查资料,知道了pkg-config这个东西,下面简单介绍一下. pkg-config提供了下面几个功能: 检查库的版本号.如果所需要的库的版 ...
- UVA12103 —— Leonardo's Notebook —— 置换分解
题目链接:https://vjudge.net/problem/UVA-12103 题意: 给出大写字母“ABCD……Z”的一个置换B,问是否存在一个置换A,使得A^2 = B. 题解: 对于置换,有 ...