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和前端完 ...
随机推荐
- JS 对象、HTML事件处理、JS 类型转换、Date
1. JS 对象 <script> var Person = new Object(); Person.id = 1; Person.name = "Hello World&qu ...
- [转载] $\mathrm{Jordan}$标准型的介绍
本文转载自陈洪葛的博客$,$ 而实际上来自xida博客朝花夕拾$,$ 可惜该博客已经失效 $\mathrm{Jordan}$ 标准形定理是线性代数中的基本定理$,$ 专门为它写一篇长文好像有点多余$: ...
- Delphi应用程序的调试(十)调试器选项(在IDE中不要使用异常)
可在两个级别上设置调试选项:工程级和环境级.在前面的讲解中讲解了工程级调试选项,通过主菜单[Project | Options…]打开如下对话框: 可在Debugger Options对话框中设置全局 ...
- 足球3v3心得
最近常踢球,由于不容易凑人,所以都是最小场:3v3.一开始是凭发育踢,谁的体力好.技术好.速度快.身体壮谁占优.渐渐觉得这样没有意思,就花点时间研究了下足球技战术,总结出几个简单的规律,后来发现这些好 ...
- JavaScript AMD 模块加载器原理与实现
关于前端模块化,玉伯在其博文 前端模块化开发的价值 中有论述,有兴趣的同学可以去阅读一下. 1. 模块加载器 模块加载器目前比较流行的有 Requirejs 和 Seajs.前者遵循 AMD规范,后者 ...
- HDU 2444 The Accomodation of Students(判断是否可图 + 二分图)
题目大意:有一群人他们有一些关系,比如A认识B, B认识C, 但是这并不意味值A和C认识.现在给你所有互相认识的学生,你的任务是把所有的学生分成两个一组, 住在一个双人房里.相互认识的同学可以住在一个 ...
- [Design Pattern] Adapter Pattern 简单案例
Adapter Pattern, 即适配器模式,用于连接两个不兼容的接口,属于结构类的设计模式. 或者叫做,转换器模式. 下面是一个转换器模式简单案例. 假设已有 AudioPlayer 专门播放 m ...
- Jsp 中文乱码,解决
jsp 乱码 : The time on the server is 2016?2?7? ??10?45?32?. 在 jsp 中,用 jsp 语法添加 utf-8 字符集,可解决此问题 <%@ ...
- 有限状态机FSM(自动售报机Verilog实现)
有限状态机FSM(自动售报机Verilog实现) FSM 状态机就是一种能够描述具有逻辑顺序和时序顺序事件的方法. 状态机有两大类:Mealy型和Moore型. Moore型状态机的输出只与当前状态有 ...
- AFNetworking (3.1.0) 源码解析 <一>
首先说一下AFNetworking的github地址:GitHub - AFNetworking/AFNetworking: A delightful networking framework for ...