restful风格的webservice开发之概念准备篇
理解restful:
什么是rest,rest是Representational State Transfer的缩写,翻译过来就是“表现层状态转化”。这里有点不准确,其实rest省略了主语
表现层指的是资源的表现层。在这里所谓的资源指的是互联网上的一个实体,一个具体的信息。比如作为交互的一个文本,一段个人信息,一张图片等等。。。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI,要获取这个资源,访问它的URI就可以
,因此URI就成了每一个资源的地址或独一无二的识别符。
那么什么是表现层?
资源作为一个实体可以有多种表现形式。比如一张文字,可以用txt表示,也可以用xml和json来表示,甚至可以用2进制流来表示。当我们用
URI这个定位符对资源进行互动的时候,资源需要以一种确定的的表现形式来交互这种表现形式就是表现层,资源的具体表现形式(即资源用什么方式传播),
应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。举个栗子,当我要传一个人的信息的时候
我可以把这个人的信息封装成一个json然后通过uri传给服务端。那么这时候json就是个人信息的表现层。
状态转化:
理解了上面的资源 和资源的表现层,再来理解这个定义就很好理解了。访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,
势必涉及到数据和状态的变化,这个过程就是状态转化。举个栗子,小明在某个网站进行了一次注册。要把个人信息通过类似xx/postUser的uri
来完成注册,在这个过程中小明输入的个人信息(资源) 通过一种传输方式,比如json(资源的表现层)通过资源的定位符uri传给了服务器
服务器解析json然后存入数据库(这里还是资源,只不过状态变了,变成存储在硬盘中的数据)。这个过程就是状态转化,很明显可以看出
这种转化是建立在表现层上的(这里是json)。
客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,
四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),
PUT用来更新资源,DELETE用来删除资源。
总结一下:
1、uri表示一种资源(或者说对资源的操作?)
2、C/S之间的的交互是通过资源的表现层(也可以理解为传输方式)来传递的。
3、客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
那么restful和soap的区别是什么,优缺点是什么?
这里不在介绍soap网上一大堆的资料,只谈两者的优缺点。两者最根本的区别就是soap协议是重量级的复杂的协议,而REST是一种轻量级
的web service架构风格其实现和操作比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速度,
性能、效率和易用性上都优于SOAP协议。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、
POST、PUT和DELETE方法,这种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
REST架构尤其适用于完全无状态的CRUD(Create、Read、Update、Delete,创建、读取、更新、删除)操作。当然soap也有其独到的一面
不做过多介绍和本文没多大关系。
具体见http://blog.sina.com.cn/s/blog_493a845501012566.html
restful风格的webservice开发之概念准备篇的更多相关文章
- 用cxf开发restful风格的WebService
我们都知道cxf还可以开发restful风格的webService,下面是利用maven+spring4+cxf搭建webService服务端和客户端Demo 1.pom.xml <projec ...
- SpringMVC实现Restful风格的WebService
1.环境 JDK7 MyEclipse2014 tomcat8 maven 3.3.3 spring4.1.4 2.创建maven工程 使用MyEclipse创建maven工程的方式可以参考这篇博文( ...
- 使用webpy创建一个简单的restful风格的webservice应用
下载:wget http://webpy.org/static/web.py-0.38.tar.gz解压并进入web.py-0.38文件夹安装:easy_install web.py 这是一个如何使用 ...
- SpringBoot RestFul风格API接口开发
本文介绍在使用springBoot如何进行Restful Api接口的开发及相关注解已经参数传递如何处理. 一.概念: REST全称是Representational State Transfer,中 ...
- Restful风格API接口开发springMVC篇
Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机 ...
- django框架实现restful风格的API开发
RESTful风格的要求:https://www.cnblogs.com/chichung/p/9933116.html 利用django原生的框架直接做RESTful的API开发是怎样的呢?感受一下 ...
- Android Metro风格的Launcher开发系列第三篇
前言: 各位小伙伴,又到了每周更新文章了时候了,本来是周日能发出来呢,这不是赶上清明节吗,女王大人发话了,清明节前两天半陪她玩,只留给我周一下午半天时间写博客,哪里有女王哪里就有压迫呀有木有!好了闲话 ...
- IDEA java开发 Restful 风格的WebService
官网:https://www.jetbrains.com/help/idea/restful-webservices.html 1.在IntelliJ中创建新项目,选择Java Enterprise ...
- 使用laraval框架和前端完成restful风格的请求对接(这里只是讨论restful的概念)
现在,在开发中restful风格的api是比较流行的,尤其是在前后端分离的架构中. 这些东西这一下这篇文章中说的很详细:RESTful接口设计原则和优点 下面,我们来讨论如何使用laraval和前端完 ...
随机推荐
- Permission denied (publickey).
问题: ssh-keygen -t rsa -C "youremail@example.com" 若是接连按三次回车,会在-/.ssh下生成 id_rsa, id_rsa.pub ...
- STM8S学习笔记-时钟控制1
1.图13可见,STM8S单片机主要有四种时钟源可供选择: 1).1-24MHz外部晶体振荡器(HSE). 2).最大24MHz外部时钟(HSE ext). 3).16MHz高速内部RC振荡器(HSI ...
- 转:微博CacheService架构浅析
文章来自于:http://www.infoq.com/cn/articles/weibo-cacheservice-architecture 微博作为国内最大的社交媒体网站之一,每天承载着亿万用户的服 ...
- 【Hybrid App】关于Hybrid App技术解决方案的选择
[引言]近年来随着移动设备类型的变多,操作系统的变多,用户需求的增加,对于每个项目启动前,大家都会考虑到的成本,团队成员,技术成熟度,时间,项目需求等一堆的因素.因此,开发App的方案已经变得越来越多 ...
- BestCoder Round #49
呵呵哒,1001的dfs返回值写错,wa了两发就没分了,1002显然是PAM可是我没学过啊!!!压位暴力可不可以...看看范围貌似不行,弃疗...1003根本不会做,1004想了想lcc发现不可做,那 ...
- CSS伪元素before和after
今天发现很多国外的网站和框架设计都用到了before和after,之前使用的比较少,今天试了下觉得还是很有意思的~ 说明 1. :before 和 :after将在内容元素的前后插入额外的元素::be ...
- Session之考勤
昨天初步的调侃了一下cookie,希望看官能够有更轻松愉快的学习和进一步的思考应用. 小编今天突然听到人事怨声载道,原来已多日未进行打卡考勤,虽是弹性工作,也颇有不好意思,决定明日改过,进门刷卡.灵机 ...
- Linux下遍历目录及文件,更改权限
Linux下遍历目录及文件,更改权限 引言: 我在Linux下搭建android时,将eclipse及sdk复制到/usr/下时,总会出现无法读,无法写写样的问题. 解决方案: 有两个方案: 一.将复 ...
- H - Antenna Placement- hdu 3020(二分图匹配)
题意:每个 ‘*’都需要一个1*2的东西覆盖,问最少需要多少个1*2的东西来覆盖这些‘*’ 分析:只需要求出来最多有多少个完全覆盖的,然后加上那些不能被完全覆盖的点即可..把G题的代码随便修改了一下就 ...
- Java IO详解(转)
IO是Java及众多编程语言很重要的一块,同时很多程序的瓶颈和耗时操作也都在IO这块. 一.简介 IO操作面临很多问题,信息量的巨大,网络的环境等等,因为IO不仅仅是对本地文件.目录的操作,有时对二进 ...