![Web服务开发 第03章 04-RESTful_第1页](http://file4.renrendoc.com/view/96f6b3f50e508aff48f43a0909194550/96f6b3f50e508aff48f43a09091945501.gif)
![Web服务开发 第03章 04-RESTful_第2页](http://file4.renrendoc.com/view/96f6b3f50e508aff48f43a0909194550/96f6b3f50e508aff48f43a09091945502.gif)
![Web服务开发 第03章 04-RESTful_第3页](http://file4.renrendoc.com/view/96f6b3f50e508aff48f43a0909194550/96f6b3f50e508aff48f43a09091945503.gif)
![Web服务开发 第03章 04-RESTful_第4页](http://file4.renrendoc.com/view/96f6b3f50e508aff48f43a0909194550/96f6b3f50e508aff48f43a09091945504.gif)
![Web服务开发 第03章 04-RESTful_第5页](http://file4.renrendoc.com/view/96f6b3f50e508aff48f43a0909194550/96f6b3f50e508aff48f43a09091945505.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
服务计算与SOA开发
-Web服务开发技术
ServicesComputing&SOADevelopment授课教师:文斌
2014SpringHainanNormalUniversity1授课内容
01SOA及服务计算基本概念
02HTTP和XML03Web服务
04WSDL
05SOAP
06业务流程与服务组合
07主流的Web服务开发工具
08SOA应用开发案例2授课内容
01SOA及服务计算基本概念
02HTTP和XML03Web服务
04WSDL
05SOAP
06业务流程与服务组合
07主流的Web服务开发工具
08SOA应用开发案例3Web服务4概述SOAP、WSDL、UDDI通常被认为是Web服务的支撑协议,通过上面章节对HTTP和XML协议的讲解,有助于我们了解Web服务的基本设计思路。规范与协议定义了关于Web服务最基本的特征,但涉及具体实现这些特征的细节,却没有做出深入的决定。而各个软件提供商,会根据自己现有产品的特征,遵循规范来提供自己的Web服务平台。本章将从程序开发的角度来剖析Web服务的开发及运行过程。5Web服务.NET系列JAVA系列IBMSCA/SDORESTfulWeb服务6REST是什么?WhyRESTful
?RESTfulWebService!7在这个流量=金钱的时代8为什么要了解REST:API数据角度从数据上来看:互联网程序员不了解RESTAPI可以吗?9为什么要了解REST:同行数据角度/apis/directory/1?sort=mashups10为什么要了解REST:AmazoneCommerceVS
TaobaoTopREST +SOAP(85:15)REST11REST、RESTful???RoyThomasFielding博士2000年提出REST是英文RepresentationalStateTransfer的缩写表象化状态转变或者表述性状态转移REST是Web服务的一种架构风格REST一种新型的分布式软件设计架构使用HTTP、URI等广泛流行的标准和协议12到底是什么REST是一种设计风格。它不是一种标准,也不是一种软件,而是一种思想。REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。13一个简单扼要的定义REST定义了应该如何正确地使用(这和大多数人的实际使用方式有很大不同)Web标准,例如HTTP和URI。如果你在设计应用程序时能坚持REST原则,那就预示着你将会得到一个使用了优质Web架构的系统。
----------StefanTilkov
14Http协议你知道多少?1:http的请求方法有多少?2:请求包头你知道多少?3:返回码呢?GET
请求获取Request-URI所标识的资源POST
在Request-URI所标识的资源后附加新的数据HEAD
请求获取由Request-URI所标识的资源的响应消息报头PUT
请求服务器存储一个资源,并用Request-URI作为其标识PATCHTRACE
请求服务器回送收到的请求信息,主要用于测试或诊断CONNECT保留将来使用OPTIONS请求查询服务器的性能,或者查询与资源相关的选项和需求15什么是RESTRepresentationalStateTransfer(表述性状态转移),简称REST,来自RoyFielding的博士论文:《ArchitecturalStylesandtheDesignofNetwork-basedSoftwareArchitectures》(《架构风格与基于网络的软件架构设计》)RoyFielding是DaySoftware公司的首席科学家,Apache软件基金会的合作创始人,在美国加洲大学欧文分校获得博士学位,HTTP、URI等Web标准的主要设计者16
REST架构的主要原则网络上的所有事物都可被抽象为资源(Resource)每个资源都有一个唯一的资源标识符(ResourceIdentifier)同一资源具有多种表现形式(xml、json等)对资源的各种操作不会改变资源标识符所有的操作都是无状态的(Stateless)Ps:符合REST原则的架构方式即可称为RESTful17资源、资源、资源处处皆资源(Resource):2010公司的销售数据小明09年一月份看过的书正在上映的电影公司销售的产品清单……REST与资源REST面向的对象是资源RE——表现,即mediatype的设计。ST——通过跟踪超链接实现状态迁移。18资源与URIDesignRESTful风格的一大特色就是使用URI来标示资源URI和URLhttp:///users/
http:///users/{user}(oneforeachuser)http:///findUserFormhttp:///locations/http:///locations/{location}(oneforeachlocation)http:///findLocationForm19REST从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。获得这些表征致使这些应用程序转变了其状态。随着不断获取资源的表征,客户端应用不断地在转变着其状态,所谓表征状态转移(RepresentationalStateTransfer)。REST是一种的分布式应用架构风格,HTTP1.1是基于REST架构风格设计的。其他分布式引用架构风格1:分布式对象(RMI/EJB/HSF)2:远程过程调用(SOAP/XML-RPC/JSON-RPC/HESSION)20RESTfulHTTP方案中的所有资源都继承自类似于这样的一个类:classResource{
Resource(URIu);Responseget();Responsepost(Requestr);Responseput(Requestr);Responsedelete();}21指导思想:REST的架构约束客户端-服务器无状态缓存统一接口分层系统按需代码(可选约束,我没搞懂)22资源操作http:///users/GET:获取一个资源
POST:创建一个新的资源
PUT
:修改一个资源的状态
DELETE:删除一个资源
23资源展现XmlJsonXhtmlRSS/AtomOtherMediatypes24返回数据1:xml序列化耗时返回的数据把显得有点大很想说的是twitterstreamapi抛弃了xml2:Json简单清晰数据包小提示:不要json-lib,选择jackson来序列化josnTaobao,amazon都返回json
,xml2种格式3:atomAtom供稿格式(AtomSyndicationFormat)是用于网站消息来源,基于XML的文档格式。GoogleDataAPI和豆瓣都是基于Atom格式的返回4:RSS25资源多重表述什么是资源表述?它是一段对于资源在某一个特定时刻的状态描述,资源表述有多种格式,最常见的是HTML/XML/JSON纯文本。26无状态性无状态性使得客户端和服务器端不必保存对方的详细信息,服务器只需要处理当前Request,而不必了解前面Request的历史无状态性减少了服务器从局部错误中恢复的任务量,可以非常方便地实现FailOver技术,从而很容易地将服务器组件部署在集群内无状态性使得服务器端不必在多个Request中保存状态,从而可以更容易地释放资源无状态性无需服务组件保存Request状态,因此可让服务器充分利用Pool技术来提高稳定性和性能27指导思想(续):REST的五条关键原则为所有“事物”定义ID(URI)将所有事物链接在一起使用标准方法资源多重表述无状态通信28为什么要基于API开发WEB是开放的时代,twitter的30W个客户端构造了操作壁垒,让google,facebook无法追赶;API让web,手机客户端,桌面多种操作成为可能,程序员分工更加明确,切降低了开发成本;软件开发依赖解耦让编程语言发挥各自的优势。29REST导致的变化30RESTFULAPI一种基于http协议和rest架构策略的一种简单webservice,包含以下特征:Web服务的基本URI,如
http:///feed/review/latestWeb服务接受与返回的互联网媒体类型,比如:JSON,XML,YAML等。Web服务在该资源上所支持的一系列请求方法(比如:POST,GET,PUT或DELETE)。API必须是超文本驱动31HTTP在RESTFULAPI中的典型应用RESOURCEGETPOSTPUTDELETEPATCH
http:///feed/review/latestselectinsertupdatedeletePartialupdateGET/PUT/DELETE/PATCH方法:幂等的,POST是不幂等的POST/PUT/DELETE/PATCH方法:不安全的,GET是安全的32简单实例:Python框架Web.py的实现RESTFULAPI然后配置urls
=
('/item/(.*)',‘item')。好吧,我承认这是我见过的最简单实现restfulAPI的框架!详细地址:/2008/09/20/getting-restful-with-webpy/33思考1:其实都可以GET实现,都用GET方式的害处?2:POST也可以实现很多功能,POST方式的害处?3:Servlet规范JSR154,JSR315定义了哪些方法?34JavaAPIforRESTfulWebServices:JSR-311JSR-311(JAX-RS:JavaAPIforRESTfulWebServices)旨在定义一个统一的规范,使得Java程序员可以使用一套固定的接口来开发REST应用。特征:使用POJO编程模型基于Annotation的配置集成了JAXB,35JAX-RS提供的标注将资源类@Path,标注资源类或方法的相对路径@GET,@PUT,@POST,@DELETE,标注方法是用的HTTP请求的类型@Produces,标注返回的MIME媒体类型@Consumes,标注可接受请求的MIME媒体类型@PathParam,@QueryParam,@HeaderParam,@CookieParam,@MatrixParam,@FormParam,分别标注方法的参数来自于HTTP请求的不同位置,例如@PathParam来自于URL的路径,@QueryParam来自于URL的查询参数,@HeaderParam来自于HTTP请求的头信息,@CookieParam来自于HTTP请求的Cookie。36代码示例@GET@Produces({MediaType.APPLICATION_JSON})@Path("/book/{id}")publicBookgetBook(@PathParam("id")Stringid){returnnewBook("huhu","huhu");}@PUT@Path("/book/{name}")publicvoidupdateBook(@PathParam("name")PathSegmentbook){
Iterator<Book>it=books.iterator();Stringname=String.valueOf(book.getMatrixParameters().get("name"));Stringcontent=String.valueOf(book.getMatrixParameters().get("content"));
while(it.hasNext()){Bookbooktmp=it.next();
if(name.equals(booktmp.getName())){
booktmp.setContent(content);break;}}}37访问示例GET/calendar/feeds/userID/private-magicCookie/fullPOSThttps:///calendar/feeds/default/private/fullPUT/calendar/feeds/default/owncalendars/full/calendarIDDELETE/calendar/feeds/default/owncalendars/full/calendarIDPATCH/calendar/feeds/default/private/full/eventID38JAX-RS的实现ApacheCXF,开源的Web服务框架。Jersey,由Sun提供的JAX-RS的参考实现。RESTEasy,JBoss的实现。Restlet,由JeromeLouvel和DavePawson开发,是最早的REST框架,先于JAX-RS出现题外话:Spring3.0直接支持restful风格的编码了。39目前的restful框架目前宣称支持REST风格Webservice的Java框架包括以下这些:Restlet
JerseyRESTEasy(JBoss的),CXFSpring3.0也支持REST了,还有国人做的一个轻量框架JRest4GuicePhp和python40您选择框架要考虑的产品成熟度,是否有成熟团队,社区文档是否齐全和常见框架的集成(例如:Spirng)对流行协议的支持(Atom,Oauth)配置的简易程度性能是否容易上手……41前置URI42流程鉴权业务处理返回数据43开始阶段JAVA框架选择JSR311的实现文档齐全支持spring,oauth,atom支持jetty的集成配置有点郁闷44REST优势使用REST的最佳的场景是对外提供公开的服务,也就是所谓的OpenAPI,也有的人认为RESt更适合资源导向的网站,像youtube这样的网站。REST的真正价值在于WebServices,而不是通过浏览器操作的应用程序。45当我们用浏览器访问一个网址时,浏览器会构造一个HTTP请求。这个请求有一个头信息,其中包括了本次请求接受何种类型的数据。46将用户界面和数据存储分离,提高用户界面跨多个服务平台一个好的架构应该可以很轻松的为不同的请求返回不同格式的数据。47RESTful优缺点SOAP、WSDL、WS*SOWHYREST?
RPC样式的架构中,关注点在于方法,而在REST样式的架构中,关注点在于资源REST轻量级、HTTP无状态请求可以由任何可用服务器回答,分布式、缓存、云计算资源唯一URI、标准接口基于成熟HTTP的安全模型Simplicity、human-friendly……48REST不是什么?REST不是技术
REST不是CRUD49目前restful的web应用Google的Gdata豆瓣的OpenAPIAmazon的S3等等都是REST的50RESTful.NETREST在.NET平台下的最佳实践WCFRESTfulProgrammingModelHostingWCFRESTfulServicesSecuringRESTEndpoints51前提准备WCFRESTServiceStartKit
visualstudio2008sp1
.netframework3.5sp1Fiddler(客户端调试)52URIhttp://localhost:8080/rest/Userhttp://localhost:8080/rest/User/{userName}http://localhost:8080/rest/User/xml ///<summary>
///用户信息 ///</summary> [DataContract(Name="User")] publicclassUserInfo
{ [DataMember] publicstringUserName
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度新一代高性能计算机设备采购合同
- 钦州2025年广西钦州市市直中学教师专场招聘140人笔试历年参考题库附带答案详解
- 西安2025年陕西西安音乐学院招聘6人笔试历年参考题库附带答案详解
- 红河云南民建红河州委招聘公益性岗位人员笔试历年参考题库附带答案详解
- 百色2025年广西百色学院招聘187人笔试历年参考题库附带答案详解
- 珠海广东珠海高新区科技产业局招聘专员笔试历年参考题库附带答案详解
- 滁州2025年安徽滁州凤阳县城区学校选调教师143人笔试历年参考题库附带答案详解
- 楚雄云南楚雄双江自治县综合行政执法局招聘编外长聘人员笔试历年参考题库附带答案详解
- 惠州2025年广东惠州市中医医院第一批招聘聘用人员27人笔试历年参考题库附带答案详解
- 2025年速冻麻竹笋项目可行性研究报告
- 中国氢内燃机行业发展环境、市场运行格局及前景研究报告-智研咨询(2024版)
- 开学季初三冲刺中考开学第一课为梦想加油课件
- 《自然保护区划分》课件
- 2025年普通卷钉项目可行性研究报告
- 2025年人教版英语五年级下册教学进度安排表
- 2025年建筑施工春节节后复工复产工作专项方案
- 学校食堂餐厅管理者食堂安全考试题附答案
- 《商用车预见性巡航系统技术规范》
- 玻璃电动平移门施工方案
- 春季安全开学第一课
- 陕鼓集团招聘笔试题目
评论
0/150
提交评论