一、REST简介
-
REST (Representational State Transfer),表现形式状态转换,它是一种软件架构 风格
当我们想表示一个网络资源的时候,可以使用两种方式:
-
传统风格资源描述形式
-
http://localhost/user/getById?id=1
查询id为1的用户信息 -
http://localhost/user/saveUser
保存用户信息
-
-
REST风格描述形式
-
http://localhost/user/1
-
http://localhost/user
-
-
传统方式一般是一个请求url对应一种操作,这样做不仅麻烦,也不安全,因为会程序的人读取了你的请求url地址,就大概知道该url实现的是一个什么样的操作。
查看REST风格的描述,你会发现请求地址变的简单了,并且光看请求URL并不是很能猜出来该URL的具体功能
所以REST的优点有:
-
隐藏资源的访问行为,无法通过地址得知对资源是何种操作
-
书写简化
但是我们的问题也随之而来了,一个相同的url地址即可以是新增也可以是修改或者查询,那么到底我们该如何区分该请求到底是什么操作呢?
-
按照REST风格访问资源时使用 行为动作 区分对资源进行了何种操作
-
http://localhost/users
查询全部用户信息 采用GET请求(查询) -
http://localhost/users/1
查询指定用户信息 采用GET请求(查询) -
http://localhost/users
添加用户信息 采用POST请求(新增/保存) -
http://localhost/users
修改用户信息 采用PUT请求(修改/更新) -
http://localhost/users/1
删除用户信息 采用DELETE请求(删除)
-
请求的方式比较多,但是比较常用的就4种,分别是 GET
, POST
, PUT
, DELETE
。
按照不同的请求方式代表不同的操作类型。
-
发送GET请求是用来做查询
-
发送POST请求是用来做新增
-
发送PUT请求是用来做修改
-
发送DELETE请求是用来做删除
注意:
-
上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范
-
REST提供了对应的架构方式,按照这种架构设计项目可以降低开发的复杂性,提高系统的可伸缩性
-
REST中规定GET/POST/PUT/DELETE针对的是查询/新增/修改/删除,但是我们如果非要用GET请求做删除,这点在程序上运行是可以实现的
-
-
描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源,例如:users、books、accounts......
清楚了什么是REST风格后,我们后期会经常提到一个概念叫 RESTful
,那什么又是RESTful呢?
-
根据REST风格对资源进行访问称为 RESTful 。
后期我们在进行开发的过程中,大多是都是遵从REST风格来访问我们的后台服务,所以可以说咱们以后都是基于RESTful来进行开发的。
二、RESTful入门案例
2.1 环境准备
-
创建一个Web的Maven项目
-
pom.xml添加Spring依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.itheima</groupId> <artifactId>springmvc_06_rest</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmv