发表于: 2017-12-24 22:06:57

1 619


今日完成

一,了解REST

REST即:Representational State Transfer(表现层状态转移)。具体什么是REST,必须提到Web,因为REST是以web为平台的。

Web是什么:分布式信息系统为超文本文件和其他对象(资源)提供访问入口。

 

资源是Web交媾的关键点,需要3个操作:

识别(identify)、表示(represent)、交互(interact whit),

通过这三个操作,又引出3个概念:

URI(统一资源标识符,包括URLURN)识别资源、representation(例如HTMLxml,图片,视频等)标识资源、通过协议(包括HTTPftp等)与资源进行交互。

 

所以REST就是选择通过使用HTTP协议和URI,利用client/server model对资源进行CRUD操作。

———————————————————————————————————————————————————————————————

REST其实是一种组织Web服务的架构,而并不是我们想象的那样是实现Web服务的一种新的技术,更没有要求一定要使用HTTP。其目标是为了创建具有良好扩展性的分布式系统。

反过来,作为一种架构,其提出了一系列架构级约束。这些约束有:

  1. 1,使用客户/服务器(client-server)模型。客户和服务器之间通过一个统一的接口来互相通讯。
  2. 2,层次化的系统(Layered System)。在一个REST系统中,客户端并不会固定地与一个服务器打交道。
  3. 3,无状态(Stateless)。在一个REST系统中,服务端并不会保存有关客户的任何状态。也就是说,客户端自身负责用户状态的维持,并在每次发送请求时都需要提供足够的信息。
  4. 4,可缓存(Cacheable)。REST系统需要能够恰当地缓存请求,以尽量减少服务端和客户端之间的信息传输,以提高性能。
  5. 5,统一的接口(Uniform Interface)。一个REST系统需要使用一个统一的接口来完成子系统之间以及服务与用户之间的交互。这使得REST系统中的各个子系统可以独自完成演化。
  6. 6,支持按需代码(Code-On-Demand  可选)

如果一个系统满足了上面所列出的五条约束,那么该系统就被称为是RESTful的。

 

可以说,前面的四个约束实际上都较为容易达成。唯一需要注意的无非是是否某些技术实现违反了这些约束。而第五条约束,统一接口,是REST服务设计的核心所在。

而在介绍统一接口约束之前,需要了解一下和REST密切相关的两个名词:资源和状态。可以说,资源是REST系统的核心概念。所有的设计都会以资源为中心,包括如何对资源进行添加,更新,查找以及修改等。而资源本身则拥有一系列状态。在每次对资源进行添加 ,删除或修改的时候,资源就将从一个状态转移到另外一个状态。

 

在大概了解了REST系统中的资源和状态的定义后,我们来看看统一接口这个约束。该约束又包含了四个子约束:

  1. 1,每个资源都拥有一个资源标识。每个资源的资源标识可以用来唯一地标明该资源。
  2. 2,消息的自描述性。在REST系统中所传递的消息需要能够提供自身如何被处理的足够信息。例如该消息所使用的MIME类型,是否可以被缓存等。
  3. 3,资源的自描述性。一个REST系统所返回的资源需要能够描述自身,并提供足够的用于操作该资源的信息,如如何对资源进行添加,删除以及修改等操作。也就是说,一个典型的REST服务不需要额外的文档对如何操作资源进行说明。
  4. 4,HATEOAS。即客户只可以通过服务端所返回各结果中所包含的信息来得到下一步操作所需要的信息,如到底是向哪个URL发送请求等。也就是说,一个典型的REST服务不需要额外的文档标示通过哪些URL访问特定类型的资源,而是通过服务端返回的响应来标示到底能在该资源上执行什么样的操作。一个REST服务的客户端也不需要知道任何有关哪里有什么样的资源这种信息。

(REST简介:https://www.cnblogs.com/loveis715/p/4669091.html

二,创建maven web 工程

新建maven项目,create from archetype,选择maven-archetype-webapp

Next,填写GroupId,ArtifactId和Version

Next,这里在Properties中添加一个参数archetypeCatalog=internal,不加这个参数,在maven生成骨架的时候将会非常慢,有时候会直接卡住。

(archetypeCatalog表示插件使用的archetype元数据,不加这个参数时默认为remote,local,即中央仓库archetype元数据,由于中央仓库的archetype太多了,所以导致很慢,指定internal来表示仅使用内部元数据。)

Next,填写项目名称和module名称。

finish,项目结构

recources文件夹:一般用来存放一些资源文件
webapp文件夹:用来存放web配置文件以及jsp页面等,这已经组成了一个原始的web应用


启动“Edit Configurations”

Add New 'Tomcat Server' 配置

配置Deplyment

配置Server

其结果如下


遇到的疑惑

看了REST还是有点懵,不知道怎么实现


明日计划

还没下tomcat,明天下一个

学习springMVC

收获

学习REST理论知识

学习创建maven web 工程


返回列表 返回列表
评论

    分享到