REST学习(二)

搞清楚用的是什么,怎么用:

REST 应用以“资源表述的转移(the transfer of representations of resources)”为中心来做请求和响应。

  • URI定位资源
  • 用HTTP动词(GET,POST,DELETE,DETC)描述操作

REST描述的是在网络中client和server的一种交互形式;REST本身不实用,实用的是如何设计 RESTful API(REST风格的网络接口)。增删改查都是一个地址,具体靠http头部信息判断。

  • URL中只使用名词来指定资源,原则上不使用动词。
  • Resources(资源)是REST架构或者说整个网络处理的核心

通俗讲就是:资源在网络中以某种表现形式进行状态转移

分解开来:

  • Resource:资源,即数据(前面说过网络的核心)

  • Representational:某种表现形式,比如用JSON,XML,JPEG等

  • State Transfer:状态变化。通过HTTP动词实现。

数据和功能均被视为资源,用统一资源标识符(URI)来访问资源。网页里面的链接就是典型的 URI。该资源由文档表述,并使用一组简单的、定义明确的操作来执行。
比如,一个 REST 资源可能是一个城市当前的天气情况。该资源的表述可以是一个XML文档,图像文件,或 HTM L页面。客户端可以检索特定表述,通过更新其数据修改的资源,或者完全删除该资源。

通过 URI 来标识资源:

系统中的每一个对象或是资源都可以通过一个唯一的 URI 来进行寻址。

统一接口:

显式地使用 HTTP 方法,建立CRUD(创建Create、检索Retrieve、更新Update、删除Delete)操作与 HTTP 方法之间的一对一映射:

  • 若要在服务器上创建资源,用 POST 方法;

  • 若要检索某个资源,用 GET 方法;

  • 若要更新或者添加资源,用 PUT 方法;

  • 若要删除某个资源,用 DELETE 方法。

资源多重表述:

Server和Client之间传递某资源的一个表现形式,比如用JSON,XML传输文本,或者用JPG,WebP传输图片等。URI 所访问的每个资源都可以使用不同的形式加以表示( XML 或JSON等等),具体的表现形式取决于访问资源的客户端,客户端与服务提供者使用一种内容协商的机制(请求头与 MIME 类型)来选择合适的数据格式,最小化彼此之间的数据耦合。
在 REST 的世界中,资源即状态,而互联网就是一个巨大的状态机,每个网页是其一个状态;URI 是状态的表述;REST 风格的应用则是从一个状态迁移到下一个状态的状态转移过程。

无状态:

用 HTTP Status Code传递Server的状态信息。

  • 对服务器端的请求应该是无状态的,完整、独立的请求不要求服务器在处理请求时检索任何类型的应用程序上下文或状态。

  • 无状态约束使服务器的变化对客户端是不可见的

为啥是不可见的

比如在两次连续的请求中,客户端并不依赖于同一台服务器。一个客户端从某台服务器上收到一份包含链接的文档,当它要做一些处理时,这台服务器挂掉了——如果这个客户端访问了从这台服务器接收的链接,客户端不会察觉到后台的服务器已经改变了。通过超链接实现有状态交互,即请求消息是自包含的(每次交互都包含完整的信息),有多种技术实现了不同请求间状态信息的传输,例如 URI ,cookies 和隐藏表单字段等,状态可以嵌入到应答消息里,这样状态在接下来的交互中仍然有效。
REST 风格应用在状态迁移的过程中,服务器不需要记录任何 Session,所有的状态都通过 URI 的形式记录在了客户端。也就是说,无状态服务器,是指服务器不保存会话状态(Session);而资源本身则是天然的状态,通常是需要被保存的;这里所指无状态服务器均指无会话状态服务器。

HTTP请求方法在RESTful Web服务中的应用:

  • 一组资源的URI:

    • GET:列出URI;以及该资源组中每个资源的详细信息。(后者可选)

    • PUT:使用给定的一组资源替换当前整组资源。

    • POST:在本组资源中创建/追加一个新的资源。(该操作往往返回新资源的URL)

    • DELETE:删除整组资源。

  • 单个资源的URI:

    • GET:获取指定的资源的详细信息,格式可以自选一个合适的网络媒体格式(比如XML、JSON)

    • PUT:替换/创建指定的资源。并将其追加到相应的资源组中。

    • POST:把指定的资源当作一个资源组,并在其下创建/追加一个新的元素,使其隶属于当前资源。

    • DELETE:删除指定的元素。

Maven的项目结构:

  • 标准的管理配置文件pom.xml

  • 源文件路径src/main/java

  • 资源文件路径src/main/resources

  • web应用文件src/main/webapp

JAX-RS 资源

JAX-RS 资源是一个可以处理绑定了资源的URI的HTTP请求的带有注解的POJO。

从看代码开始

导入项目:

  • Step1:

    在Eclipse project explorer中右击,在弹出框中选择import,得到如下图所示:

选择要导入的Maven项目

  • Step2:

    选择Existing Maven Projects,并点击Next,得到如下图所示对话框:

这里写图片描述

注意
将pom.xml前面的框选上,因为工作空间已经导入该项目,所以无法演示勾选!

选择一个已经创建好的Maven项目,并点击Finish。
由此,导入Maven项目成功。

  • Step3:运行Maven命令

    右击项目,点击Run as,如下图:

这里写图片描述

即可看到有很多现有的maven命令,点击即可运行,并在控制台可以看到运行信息。
如果想运行的maven命令在这里没有找到,点击Maven build创建新的命令,操作如下图所示:

这里写图片描述

新增的maven命令可以通过如下方式找到,并再次运行:

这里写图片描述

重点注意:

Maven本地仓库地址一定不要包含汉字!尤其win10系统下,若是用户名是汉字,Maven仓库地址默认路径是在C盘下用户文件夹下的.m2文件夹中
这里写图片描述

aaa是电脑的用户名,若是中文用户名在构建项目时会报错,可以从控制台的输出信息中看到相关的提示,其中就会包含该路径信息错误,导致项目构建不成功。
若是用户名已经为中文,win10家庭版已经将修改用户名的功能阉割,可以通过修改Maven的setting文件中的本地仓库默认地址来解决这个问题,新定义的仓库地址一定不要包含汉字!

Eclipse编辑器相关设置:

  • 关闭验证

    在工具栏选择Window下面的Perferences

这里写图片描述

然后按照下图所示,将验证关闭

这里写图片描述

  • Eclipse的Java的JDK设置:

    同样时在工具栏选择Window下面的Perferences,然后进行如下操作:

    这里写图片描述

默认的是指向Java的jre路径,点击Edit选项将其改为指向jdk路径,如下图所示:

这里写图片描述

  • Eclipse的Maven设置

这里写图片描述

  • Eclipse的Server设置

    同样时在工具栏选择Window下面的Perferences,然后进行如下操作:

这里写图片描述

选择Runtime Environment后点击Add按钮

这里写图片描述

这里写图片描述

Window-Show View-Servers,增加Server,选择上一步的TomEE完成后,双击上一步中的Server

这里写图片描述

勾选如下内容并保存:

这里写图片描述

数据源创建后,注意要将对应的驱动jar放到tomee的lib中,这里用的是ojdbc7.jar包。

设置jsp修改后热部署

在Servers项目中的“TomEE localhost-config”修改web.xml,找到jsp的Servlet配置,修改development参数为true。

这样项目的运行环境就设置好了,可以将项目部署到这里运行访问。

启动项目,浏览器中访问

 http://localhost:8080/项目名称

即可进行访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值