REST Service 基础 A further step.
1. REST Service虽然实现简单, 但也功能丰富, 可以用来实现各种基于Web的服务(service)。
2. REST Service的一些特点:
1)平台无关
2) 语言无关
3)基于HTTP标准
4)即使有防火墙存在的情况下也可以方便使用。
3. REST 没有提供内建的Security features, encryption, session management, QoS guarantees, etc.
但是在提供REST Service的时候,可以使用基于Http之上的安全措施:
OAuth
HTTPS
etc.
4. REST和SOAP相比的简单之处:
SOAP的请求信息
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:body pb="http://www.acme.com/phonebook">
<pb:GetUserDetails>
<pb:UserID>12345</pb:UserID>
</pb:GetUserDetails>
</soap:Body>
</soap:Envelope>
通常包含在Envelope之中,这需要我们先解析Envelop中的信息。
对于SOAP只需要
http://www.acme.com/phonebook/UserDetails/12345
REST的一些优势
- It's easy to see why Web Services are often used with libraries that create the SOAP/HTTP request and send it over, and then parse the SOAP response.
- With REST, a simple network connection is all you need. You can even test the API directly, using your browser
一个形象的例子:
SOAP就好像是邮递信件需要信封将信件wrap起来。
而是用REST就好像是一个明信片(每次请求是用更少的带宽,因为减少了信封(SOAP的包装信息)), 当然在安全性上可以使用任何加密手段保证安全。
5. 复杂请求, 前文说到只读信息推荐使用GET请求, 但是对于复杂请求,需要很多参数和信息的情况下 (HTTP协议本身未指定任何对URL长度要求。它只是建议不要超过255个字符), 这种情况下可以使用POST请求来得到资源的Representation。
6. 不同于SOAP, REST的相应不局限在XML, 可以使用JSON, CSV等其他格式。可以针对不同情况利用这些文档的优势。
XML更易于扩展。
CSV具有更好的压缩性。
JSON更易于Java Script处理。
HTML推荐作为REST的返回格式,出了在需要Human-Readable的情况下, 大部分情况返回信息是用程序来处理的。
7. REST的核心架构:
资源(Resource)
A web of resources(返回信息不能过大, 必要时使用分页paging),之前做过的一个项目就发生过返回信息过大而time out的情况。
无连接状态(No Connection state)
必要时缓存 (使用 Http cache-control Header)
使用代理服务改善性能。
8. REST设计纲领:
1)不要使用物理URL,例如指向具体的问题文件,https://csdn.net/profile.xml
2) 返回信息不能过大(分页)
3) 完善返回信息文档(例如返回信息xml的DTD
4) 返回列表具体resource的URI, https://csdn.net/users
返回所有用户信息, 例如
<users>
<user>https://csdn.net/users/onehao </user>
.....
</users>
5) GET请求不能引起资源(Resource)状态变化。
9. ROA vs.SOA, REST vs. SOAP
1) 基于SOAP based的SOA相对于ROA可能有更多成熟的工具的支持。(这种情况可能随着时间的推移而改变)
2) ROA更易于实现
3) ROA具有更好的性能, -- 更好的Cache支持, 更轻量级的Request和Response。
上一篇: REST Service 基础
Reference:
http://blog.csdn.net/onehao/article/details/9269819
http://rest.elkstein.org/
REST Service 基础 A further step.的更多相关文章
- Service基础使用
Service基础使用 之前的文章一直介绍Activity的使用,很多知识和用法单一的配合Activity使用,这次将总结Android四大组件之二--Service. 本文将要介绍以下内容: Ser ...
- Android Service基础
Service Service 是一个组件,用来执行长时间的后台操作,不提供用户界面. 另一个应用组件可以启动一个Service,它将持续地在后台运行,即便是用户转移到另一个应用它也不会停止. 另外, ...
- C# Windows Service 基础
Windows Service这一块并不复杂,但是注意事项太多了,网上资料也很凌乱,偶尔自己写也会丢三落四的.所以本文也就产生了,本文不会写复杂的东西,完全以基础应用的需求来写,所以不会对Window ...
- Web Service基础——规范及三要素
1. Java中的Web Service规范 Java 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC).JAX-RS.JAXM&SAAJ(废弃). 1.1 JAX- ...
- Web Service基础——基础概念
1. Web Service基本概念 Web Service(Web服务)是一种远程调用技术,他的作用就是从远程系统中获取业务数据.具体来说,Web Service可以让你的网站使用其他网站的资源,比 ...
- Android笔记之 Web Service 基础
一.Web Service是什么? 就是网络服务.依据W3C的定义,WebServices(Web服务)是一个用于支持网络间不同机器互操作的软件系统,它是一种自包括.自描写叙述和模块化的应用程序,它能 ...
- xBIM 基础06 将STEP物理文件转换为XML
系列目录 [已更新最新开发文章,点击查看详细] 一.STEP标准简介 STEP,它是Standard for the Exchange of Product model data的缩写.产品数 ...
- Web service基础
Web service是Web应用程序 平台是XML+http XML是不同平台和不同编程语言之间的语言,用于编解码数据. http是因特网协议 XML是web service的基础 Web serv ...
- Android Service 基础
启动方式 startService(Intent) 这种方式启动的Service可以在后台无限期的运行,与启动它的组件没有关系. bindService 绑定Service.它提供了一种类似C/S结构 ...
随机推荐
- 跟Google学习Android开发-起始篇-与其它应用程序交互(2)
6.2从活动获取结果 启动另一个活动不必是单向的.您也可以启动另一个活动,并接收一个结果回来.为了接收一个结果,调用startActivityForResult()(而不是startActivity( ...
- hdoj 2066 一个人的旅行 【多源多汇最短路】
题目:hdoj 2066 一个人的旅行 方法:缩点 + 最短路 分析:看了大神的一篇博客,讲冗余压缩的,然后就想找一个多源最短路练练手. 这个题目就是典型的多源多汇最短路 方法:把全部的源点压缩成一个 ...
- Swift - 动画效果的实现方法总结(附样例)
在iOS中,实现动画有两种方法.一个是统一的animateWithDuration,另一个是组合出现的beginAnimations和commitAnimations.这三个方法都是类方法. 一,使用 ...
- QT5.6,5.7,5.8的新特征以及展望
https://wiki.qt.io/New_Features_in_Qt_5.6 (跨平台High-DPI,改进WebEngine到45,支持WIN 10,Canvas3D,3D) https:// ...
- UVA 10003 Cutting Sticks
题意:在给出的n个结点处切断木棍,并且在切断木棍时木棍有多长就花费多长的代价,将所有结点切断,并且使代价最小. 思路:设DP[i][j]为,从i,j点切开的木材,完成切割需要的cost,显然对于所有D ...
- 基于Chrome开源提取的界面开发框架开篇--转
初衷 一直希望VC开发者能够方便的开发出细腻高品质的用户界面.我喜欢C++,选择的平台是Windows,所以大部分时间用VC.我自身不排斥其他技术或者开发语言或者开发工具,都去了解,了解的目的是想吸取 ...
- PhoneGap-----Contacts
Everything in the code!!! <!DOCTYPE html> <html> <head> <title>Contact Examp ...
- [每日一题] 11gOCP 1z0-052 :2013-09-5 runInstaller oracle of no swap
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/11186995 正确答案:A 我们先来看下面这张截图,这是我在安装Oracle 11.2.0 ...
- STL 源代码分析 算法 stl_algo.h -- includes
本文senlie原,转载请保留此地址:http://blog.csdn.net/zhengsenlie includes(应用于有序区间) ------------------------------ ...
- web开发性能优化---用户体验篇
怎样从技术角度怎样增强用户体验.都是非常多平台都在做的事情,依据个人实际经验碰到几种体验做下总结. 1.降低页面刷新白屏 适当使用ajax技术.改善刷新白屏现象. 2.信息提醒,邮件.站内信.短信在购 ...