SpringMVC RESTFul及REST架构风格介绍

目录
  • 一、RESTful 简介
  • 二、RESTful 的实现
    • 实践一下
      • 1. get 和 post 请求
      • 2. put 和 delete 请求

一、RESTful 简介

REST 是一种软件架构风格。

REST:Representational State Transfer,表现层资源状态转移。

对此,有几个名字需要理解一下:

表现层:实际上就是前端的页面到后端的控制层。

资源:当应用部署到服务器上之后,万物皆资源,比如一个类、一个html页面等等。

  • 1-资源是一种看待服务器的方式,即将服务器看作是由很多离散的资源组成。每个资源是服务器上一个可命名的抽象概念。
  • 2-因为资源是一个抽象的概念,所以它不仅仅能代表服务器文件系统中的一个文件、数据库中的一张表等等具体的东西,可以将资源设计的要多抽象有多抽象,只要想象力允许而且客户端应用开发者能够理解。
  • 3-与面向对象设计类似,资源是以名词为核心来组织的,首先关注的是名词。
  • 4-一个资源可以由一个或多个URI来标识。
  • 5-URI既是资源的名称,也是资源在Web上的地址。
  • 6-对某个资源感兴趣的客户端应用,可以通过资源的URI与其进行交互。

资源的表述:是一段对于资源在某个特定时刻的状态的描述。

  • 1-可以在客户端-服务器端之间转移(交换)。
  • 2-资源的表述可以有多种格式,例如HTML/XML/JSON/纯文本/图片/视频/音频等等。
  • 3-资源的表述格式可以通过协商机制来确定。
  • 4-请求-响应方向的表述通常使用不同的格式。

状态转移:在客户端和服务器端之间转移(transfer)代表资源状态的表述。通过转移和操作资源的表述,来间接实现操作资源的目的。

二、RESTful 的实现

具体说,就是 HTTP 协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。

它们分别对应四种基本操作:

  • GET 用来获取资源
  • POST 用来新建资源
  • PUT 用来更新资源
  • DELETE 用来删除资源

REST 风格提倡 URL 地址使用统一的风格设计,从前到后各个单词使用斜杠分开。

不使用问号键值对方式携带请求参数,而是将要发送给服务器的数据作为 URL 地址的一部分,以保证整体风格的一致性。比如:

实践一下

使用 RESTFul 模拟一下用户资源的增删改查。

1. get 和 post 请求

控制器方法:

@Controller
public class UserController {
    /**
     * /user    GET     查询所有用户信息
     * /user/1  GET     根据用户 id 查询用户信息
     * /user    POST    添加用户信息
     * /user/1  DELETE  删除用户信息
     * /user    PUT     更新用户信息
     */
    @RequestMapping(value = "/user", method = RequestMethod.GET)
    public String getAllUser() {
        System.out.println("查询所有用户信息");
        return "success";
    }
    @RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
    public String getUserById() {
        System.out.println("根据用户 id 查询用户信息");
        return "success";
    }
    @RequestMapping(value = "/user", method = RequestMethod.POST)
    public String addUser(String username, String password) {
        System.out.println("添加用户信息:" + username + "," + password);
        return "success";
    }
}

test_rest.html:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p>test_rest 页面</p>
    <a th:href="@{/user}" rel="external nofollow" >查询所有用户信息</a><br>
    <a th:href="@{/user/1}" rel="external nofollow" >根据用户 id 查询用户信息</a><br>
    <form th:action="@{/user}" method="post">
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        <input type="submit" name="添加用户"><br>
    </form>
</body>
</html>

配置文件里,加上视图控制:

<mvc:view-controller path="/testRest" view-name="test_rest"></mvc:view-controller>

这样就可以通过http://localhost:8080/springmvc/testRest访问到test_rest.html的页面了。

点击测试一下。

2. put 和 delete 请求

由于浏览器只支持发送 get 和 post 方式的请求,那么该如何发送 put 和 delete 请求呢?

答案:使用 HiddenHttpMethodFilter 过滤器,可以帮助我们将 POST 请求转换为 DELETE 或 PUT 请求。

在web.xml中注册HiddenHttpMethodFilter,这个过滤器要配置在编码过滤器之后,防止更新操作获取到的参数是乱码:

<filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

注意
使用的前提条件有 2 个:

  • 当前请求的请求方式必须为 post当
  • 前请求必须传输请求参数 _method

那么前端页面里修改的表单应该是成这样:

<p>修改用户信息的表单</p>
    <form th:action="@{/user}" method="post">
        <input type="hidden" name="_method" value="put">
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        <input type="submit" name="修改"><br>
    </form>

注意这里name="_method" value="put",value 的值才是真正的方法名。

提交测试一下:

感谢《尚硅谷》的学习资源。

以上就是SpringMVC RESTFul及REST架构风格介绍的详细内容,更多关于SpringMVC RESTFul架构风格的资料请关注我们其它相关文章!

(0)

相关推荐

  • java开发SSM框架具有rest风格的SpringMVC

    目录 RESTful架构 资源 表现层(Representation) 状态转化(State Transfer) 简单小结 SpringMVC对RESTful架构的支持 利用ajax实现前后端完全分离 RESTful架构 REST(Resource Representational State Transfer)即"资源表现层状态转化",省略了Resource (资源).允许客户端发出以统一资源标识符访问和操作网络资源的请求,而与预先定义好的无状态操作集一致化. 资源 指网络上的一个具

  • SpringMVC框架REST架构体系原理分析

    目录 资源(Resource) 表现层(Representation) 状态转换(State Transfer) 如何使用 1.在Handler写出增删改查的方法 2.Repository 资源(Resource) 资源是网络上的⼀个实体,或者说网络中存在的⼀个具体信息,⼀段⽂本.⼀张图片.⼀⾸歌曲.⼀段视频等等,总之就是⼀个具体的存在.可以用⼀个 URI(统⼀资源定位符)指向它,每个资源都有对应的⼀个 特定的 URI,要获取该资源时,只需要访问对应的 URI 即可. 表现层(Represent

  • SpringMVC RESTFul实战案例修改功能实现

    目录 SpringMVC RESTFul实现修改功能 一.回显功能 1.修改操作超链接 2.处理控制器方法 3.创建修改页面 二.修改功能 1.添加控制器方法 2.测试效果 SpringMVC RESTFul实现修改功能 一.回显功能 做实际修改操作之前,需要有个回显功能,就是点编辑页后可以看到数据. 1.修改操作超链接 这里的请求地址跟删除的一样,需要带上 id,因为要回显这个 id 的数据. <td> <a @click="deleteEmployee" th:h

  • SpringMVC RESTFul实战案例删除功能实现

    目录 SpringMVC RESTFul实现删除功能 一.修改列表前端代码 1. 修改删除的请求地址 2. 添加删除用的 form 表单 3. 删除超链接绑定点击事件 二.增加后端控制器 三.测试效果 SpringMVC RESTFul实现删除功能 删除相对麻烦一点,因为 Rest 中得用 delete 方法请求. 在前面已经提到如何实现 delete 和 put 方法请求了,这里同样借助表单来提交 post 请求,然后转成 delete 请求方法. 一.修改列表前端代码 1. 修改删除的请求地

  • SpringMVC RESTFul实现列表功能

    目录 SpringMVC RESTFul列表功能实现 一.增加控制器方法 二.编写列表页 employee_list.html 三.访问列表页 SpringMVC RESTFul列表功能实现 一.增加控制器方法 在控制器类 EmployeeController 中,添加访问列表方法. @Controller public class EmployeeController { @Autowired private EmployeeDao employeeDao; @RequestMapping(v

  • SpringMVC RESTFul实战案例访问首页

    目录 SpringMVC RESTFul访问首页实现 一.新建 index.html 二.配置视图控制器 三.Idea 部署配置 SpringMVC RESTFul访问首页实现 一.新建 index.html 在 webapp\WEB-INF\templates 下新建首页 index.html. <!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <

  • SpringMVC RESTFul实体类创建及环境搭建

    目录 一.搭建 mvc 环境 二.创建实体类 三.准备 dao 模拟数据 四.准备控制器 一.搭建 mvc 环境 新建一个 module 模块,创建 maven 工程,步骤跟以前一样,各种配置文件内容也可以拷贝修改一下即可. 二.创建实体类 新建个 bean 包,创建实体类 Employee: package com.pingguo.rest.bean; public class Employee { private Integer id; private String lastName; pr

  • SpringMVC RESTFul及REST架构风格介绍

    目录 一.RESTful 简介 二.RESTful 的实现 实践一下 1. get 和 post 请求 2. put 和 delete 请求 一.RESTful 简介 REST 是一种软件架构风格. REST:Representational State Transfer,表现层资源状态转移. 对此,有几个名字需要理解一下: 表现层:实际上就是前端的页面到后端的控制层. 资源:当应用部署到服务器上之后,万物皆资源,比如一个类.一个html页面等等. 1-资源是一种看待服务器的方式,即将服务器看作

  • SpringMVC Restful风格与中文乱码问题解决方案介绍

    目录 基本要点 1.定义 2.传统方式与Restful风格的区别 3.如何使用Restful风格 4.为什么要用restful 5.乱码问题 基本要点 1.定义 根据百度百科的定义,RESTFUL是一种网络应用程序的设计风格和开发方式 2.传统方式与Restful风格的区别 在我们学习restful风格之前,我们请求接口,都是使用http://localhost:8080/controller?method=add这种方式携带接口所需要的参数 而调用restful风格的接口时,我们可以改成htt

  • springmvc Rest风格介绍及实现代码示例

    简介 REST 即 Representational State Transfer.(资源)表现层状态转化.是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越多网站的采用,POST, DELETE, PUT, GET 分别对应 CRUD.Spring3.0 开始支持 REST 风格的请求,是通过 org.springframework.web.filter.HiddenHttpMethodFilter 把 POST 请求转化为 PUT 和 DELETE

  • SpringMVC RESTful支持实现过程演示

    这篇文章主要介绍了SpringMVC RESTful支持实现过程演示,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.概述 1.1 什么是RESTful RESTful软件开发理念,RESTful对http进行非常好的诠释. RESTful即Representational State Transfer的缩写. 综合上面的解释,我们总结一下什么是RESTful架构: 1)每一个URI代表一种资源: (2)客户端和服务器之间,传递这种资源的某种

  • 本真的REST架构风格理解

    目录 引子 Web技术发展与REST的由来 REST架构风格的推导过程 REST详解 什么是资源? 什么是资源的表述? 什么是状态转移? 什么是统一接口? 什么是超文本驱动? REST与DO的差别 REST与RPC的差别 参考资料: 引子 在移动互联网.云计算迅猛发展的今天,作为一名Web 开发者,如果您还没听说过“REST”这个buzzword,显然已经落伍了.夸张点说,甚至“出了门都不好意思跟别人打招呼”.尽管如此,对于REST 这个泊来品的理解,大多数人(包括一些资深的架构师)仍然停留在“

随机推荐