REST基础及实例开发课件

上传人:文**** 文档编号:241780829 上传时间:2024-07-23 格式:PPTX 页数:33 大小:473.15KB
返回 下载 相关 举报
REST基础及实例开发课件_第1页
第1页 / 共33页
REST基础及实例开发课件_第2页
第2页 / 共33页
REST基础及实例开发课件_第3页
第3页 / 共33页
点击查看更多>>
资源描述
REST基础及实例开发REST基础及实例开发黄晓娜2011-11-22REST基础及实例开发黄晓娜1REST基础及实例开发REST基础uREST概念uREST设计原则u资源的识别 Restful Web服务的java框架实例开发(转账业务)u环境准备u 服务端开发u服务部署u 客户端访问u 补充(动态创建URI及REST常用注释)理解出错处 REST基础2REST基础及实例开发 REST(Representation State Transfer:表述性状态转移)描述了一个架构样式的网络系统,比如 web 应用程序。REST从资源的角度来描述整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。获得这些特征致使这些应用程序转变了其状态。随着不断获取资源的表征,客户端应用不断地在转变这其状态,也即所谓的表述状态转移。REST是设计风格。它通常基于使用HTTP,URI,和XML以及HTML这些现有的协议和标准。REST指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。注意:REST中的资源指的不是数据,而是数据和表现形式的组合,比如“访问次数”和“下载次数”在数据上可能有重叠或者完全相同,而由于他们的表现形式不同,所以被归为不同的资源 REST(Representation State Tr3REST基础及实例开发REST基础uREST概念uREST设计原则u资源的识别 Restful Web服务的java框架实例开发(转账业务)u环境准备u 服务端开发u服务部署u 客户端访问u 补充(动态创建URI及REST常用注释)理解出错处 REST基础4REST基础及实例开发 网络上的所有事物都被抽象为资源-应用程序对象、数据库记录、算法等。每个资源对应一个唯一的资源标识符(URI)。通过通用的连接器接口(GET,PUT,POST,DELETE)对资源进行操作。对资源的各种操作不会改变资源标识符。所有操作都是无状态的。每个HTTP请求都是孤立的,每个请求都必须包含自己的参数来完成操作。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。分层系统:组件无法了解它与之交互的中间层以外的组件。通过将系统知识限制在单个层,可以限制整个系统的复杂性,促进了底层的独立性。REST 设计原则包括客户-服务器、无状态、缓存、统一接口、分层系统等。REST 原则的无状态指服务器端不保存客户应用状态,连接请求响应断开,客户的上一次请求与下一个请求没有关系。服务器端响应客户请求返回资源的表述及相关链接,该表述的本身就是客户的当前状态,客户按照表述中提供的链接选择下一个表述,迁移到下一个状态。也就是服务器通过表述为状态迁移提供指导,而状态的迁移权掌控在用户手里,客户根据自己的需要选择链接,由当前状态迁移到下一个状态。网络上的所有事物都被抽象为资源-应用程序对象、数据库记录、5REST基础及实例开发 HTTP请求方法在RESTful web中的应用资源资源GETPUTPOSTDELETE一组资源的URI,比如http:/ URI,以及该资源组中每个资源的详细信息(后者可选)可缓存,幂等使用给定的一组资源替换替换当前整组资源。在本组资源中创建创建/追加追加一个新的资源。该操作往往返回新资源的URI。不缓存,不幂等删除删除 整组资源。单个资源的URI,比如http:/ 指定的资源的详细信息,格式可以自选一个合适的网络媒体类型(比如:XML、JSON等)替换替换/创建创建 指定的资源。并将其追加到相应的资源组中。只有在客户端能够决定资源的URI时才能使用把指定的资源当做一个资源组,并在其下创建创建/追加追加一个新的元素,使其隶属于当前资源。删除删除 指定的元素。HTTP请求方法在RESTful web中的应用资源GET6REST基础及实例开发REST基础uREST概念uREST设计原则u资源的识别 Restful Web服务的java框架实例开发(转账业务)u环境准备u 服务端开发u服务部署u 客户端访问u 补充(动态创建URI及REST常用注释)理解出错处 REST基础7REST基础及实例开发 分析用例,找到可以“创建”、“读取”、“更新”或“删除”动作来操作的领域名词,每个领域名词都可标识为资源。使用POST,GET,DELETE,PUT对其进行操作。某些情况下,例如:生成随机数;为客户端提供一个方法,在一个请求中,获取最小属性集的用户档案;列出最近10张用户上传的照片;将钱从一个银行账户转到另一个银行账户(转账)等。可以识别出名词但是如果将这些名词设别为资源,会发现相应的动作没有办法映射到HTTP方法上。这是需要额外的资源来处理这些用例。分析用例,找到可以“创建”、“读取”、“更新”或“删除”动8REST基础及实例开发REST基础uREST概念uREST设计原则u资源的识别 Restful Web服务的java框架实例开发(转账业务)u环境准备u 服务端开发u服务部署u 客户端访问u 补充(动态创建URI及REST常用注释)理解出错处 REST基础9REST基础及实例开发 Restlet:由erome Louvel 和 Dave Pawson 开发,它实现针对各种 RESTful 系统的资源、表示、连接器和媒体类型之类的概念,包括 Web 服务。在 Restlet 框架中,客户端和服务器都是组件。组件通过连接器互相通信。JSR-311是 Sun Microsystems 的规范,可以为开发 RESTful Web 服务定义一组 Java API。Jersey是对 JSR-311 的参考实现。uJSR-311 提供一组注释,相关类和接口都可以用来将 Java 对象作为 Web 资源展示。该规范假定 HTTP 是底层网络协议。它使用注释提供 URI 和相应资源类之间的清晰映射,以及 HTTP 方法与 Java 对象方法之间的映射。API 支持广泛的 HTTP 实体内容类型,包括 HTML、XML、JSON、GIF、JPG 等。它还将提供所需的插件功能,以允许使用标准方法通过应用程序添加其他类型。Restlet:由erome Louvel 和 Dave 10REST基础及实例开发REST基础uREST概念uREST设计原则u资源的识别 Restful Web服务的java框架实例开发(转账业务)u环境准备u 服务端开发u服务部署u 客户端访问u 补充(动态创建URI)理解出错处 REST基础11REST基础及实例开发 安装JDK,Tomcat并配置变量。安装Eclipse或MyEclipse 在Jersey官网上下载所需的jar包 Jersey框架所依赖的包客户端解析JSON所需的包 安装JDK,Tomcat并配置变量。Jersey框架所依赖12REST基础及实例开发REST基础uREST概念uREST设计原则u资源的识别 Restful Web服务的java框架实例开发(转账业务)u环境准备u 服务端开发u服务部署u 客户端访问u 补充(动态创建URI及REST常用注释)理解出错处 REST基础13REST基础及实例开发 在Myeclipse开发环境中创建一个Java Web工程。添加jar包到web工程的类路径 u 直接添加,把jar包copy到WebRoot/WEB-INF/libu 在工程的根目录下创建lib文件夹,copy jar包到lib,配置Build-path 在Myeclipse开发环境中创建一个Java Web工程14REST基础及实例开发 REST基础及实例开发课件15REST基础及实例开发 OKOKOKOK16REST基础及实例开发转账业务应用场景:当用户输入贷款账户(LoanAccountid),借款账户(Borrowerid)和借款金额(LoanAmounts)后,点击转账,客户端调用服务端的转账资源,修改CustomerAccount表,使贷款账户余额减少LoanAmounts,借款账户月增加LoanAmounts。Web工程结构 AccountService代码 CustomerAccount代码Javabean文件,其与数据库表结构对应,用于封装数据对象,以便在服务端和数据端传送数据转账业务应用场景:当用户输入贷款账户(LoanAccount17REST基础及实例开发 修改配置文件web.xmlcom.sun.jersey.spi.container.servlet.ServletContainercom.sun.jersey.config.property.packagesaccount.service1/accountres/*资源文件所在的包名RestfulContainerRestfulContainer访问资源基路径 修改配置文件web.xml资源文件所在的包名servle18REST基础及实例开发REST基础uREST概念uREST设计原则u资源的识别 Restful Web服务的java框架实例开发(转账业务)u环境准备u 服务端开发u服务部署u 客户端访问u 补充(动态创建URI及REST常用注释)存在问题迷惑 REST基础19REST基础及实例开发 部署 部署20REST基础及实例开发 点击“Finish”,启动tomcat 点击“Finish”,启动tomcat21REST基础及实例开发REST基础uREST概念uREST设计原则 Restful Web服务的java框架实例开发(转账业务)u环境准备u 服务端开发u服务部署u 客户端访问u 补充(动态创建URI)理解出错处 REST基础22REST基础及实例开发 可以在AOM,Flex,Myeclipse下开发restful web的客户端访问应用程序 客户端应用程序通过Jersey提供的jersey-client.jar与服务端通信 部分代码/定义一个客户端Client c=Client.create();/获取指定URI下资源WebResource r=c.resource(http:/192.168.0.99:8080/transiation1/accountres/account/tran);/定义一个MultivalueMap存储参数MultivaluedMap queryParams=new MultivaluedMapImpl();queryParams.add(loanAccountid,fromid);queryParams.add(loanAmounts,num);queryParams.add(borrowerid,toid);ClientResponse response=r.get(ClientResponse.class);System.out.println(r.queryParams(queryParams).get(String.class);可以在AOM,Flex,Myeclipse下开发restf23REST基础及实例开发 访问客户端(http:/127.0.0.1:6888/RestfulClient/restful.faces)访问客户端(http:/127.0.0.1:6888/24REST基础及实例开发REST基础uREST概念uREST设计原则u资源的识别 Restful Web服务的java框架实例开发(转账业务)u环境准备u 服务端开发u服务部署u 客户端访问u 补充(动态创建URI及REST常用注释)理解出错处 REST基础25REST基础及实例开发 动态创建URI:在REST中的POST中,创建一个具有唯一URI的资源,当此资源创建成功后,就可以通过此URI访问该资源。Example:创建一个添加用户的页面,并把用户的ID作为访问此用户URI的一部分。用户在浏览器上输入http:/localhost:8080/Example/rest/contacts,并输入ID,Name点击“submit”如下所示:动态创建URI:在REST中的POST中,创建一个具有唯一26REST基础及实例开发 用户在浏览器上输入http:/localhost:8080/Example/rest/contacts/0001,将会调用GET方法把ID为0001的信息以XML或JSON的形式显示,如下:用户在浏览器上输入http:/localhost:80827REST基础及实例开发 具体实现u REST提供了context注释,可以引入上下文对象(Request、Response、UriInfo、ServletContext)u 此例子中使用UriInfo类的方法创建URIPOSTProduces(MediaType.TEXT_HTML)Consumes(MediaType.APPLICATION_FORM_URLENCODED)public void newContact(FormParam(id)String id,FormParam(name)String name,Context HttpServletResponse servletResponse)throws IOException URI uri=uriInfo.getAbsolutePathBuilder().path(id).build();Response.created(uri).build();u 详细代码u HTML页面脚本 具体实现28REST基础及实例开发 REST常用注释u Path:与根路径结合形成子资源的URIu PathParam:将参数注入参数的路径u QueryParam:普通参数传递u FormParam:表明此参数从HTML属性确定的表单输入u Produces:响应支持MediaType类型,表示服务端返回到客户端的参数类型u Consumes:响应支持MediaType类型,表示客户端传递到服务端的参数类型u Context:引入上下文对象 REST常用注释29REST基础及实例开发REST基础uREST概念uREST设计原则u资源的识别 Restful Web服务的java框架实例开发(转账业务)u环境准备u 服务端开发u服务部署u 客户端访问u 补充(动态创建URI及REST常用注释)理解出错处 REST基础30REST基础及实例开发针对于POST和GET的理解不够透彻,通过查阅资料可知这几个动词的操作对象是资源集合,但是可以为GET指定一个path(URI),并创建资源(在GET对应的方法中写一段代码实现某一个功能)例如:GET Path(“add)Produces(MediaType.TEXT_PLAIN)Consumes(MediaType.TEXT_PLAIN)public String add(QueryParam(num1)DefaultValue(1)String num1,QueryParam(num2)DefaultValue(2)String num2)float result=Float.parseFloat(num1)+Float.parseFloat(num2);return String.valueOf(result);实现一个加法运算。上面的实现的加法运算很明显是一个资源的创建过程,而非资源的查找。这样做是不是违背了REST的设计原则?NO!针对于POST和GET的理解不够透彻,通过查阅资料可知这几个31REST基础及实例开发 对于一些处理函数,算法,应用程序,可以把它们自身视为资源,在REST中称为抽象资源。以上求两个数和的函数可以把其作为一个资源,其计算结果(两个数的和)可以作为此资源的一个表述;此外,例如计算两地的距离算法,可以把计算距离算法作为一个资源,而距离只是它的一个表述。以上处理函数都要求幂等性,所以GET是最适合实现处理函数的HTTP方法。对于GET方式,服务器端用Request.QueryString获取变量的值,对于POST方式,服务器端用Request.Form获取提交的数据。GET是把参数数据队列加到提交表单的ACTION属性所指的URL,值和表单内各个字段意义对应在URL中可以看到。POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程 对于一些处理函数,算法,应用程序,可以把它们自身视为资源,32REST基础及实例开发Thank You!Q&AThank You!33
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!