7、SpringMVC之RESTful概述
7.1、简介
RESTful 也称为REST(英文:Representational State Transfer)即表现层状态传递,它是一种软件架构风格或设计风格;
REST 是 Roy Fielding 博士( HTTP 规范的主要编写者之一)在其2000年的博士论文中提出来的;
其作用是,降低开发的复杂性、提高系统的可伸缩性;
通过基于 REST 的 API 公开系统资源是一种灵活的方法,可以为不同种类的应用程序提供以标准方式格式化的数据;
Ajax 与 REST 之间的完美配合增加了当今人们对 REST 的注意力。
7.2、传统风格与RESTful风格
RESTful 风格提倡 URL 地址使用统一的风格设计,各单词之间用斜杠分开;
RESTful 风格不使用问号键值对的方式携带请求参数,而是将要发送给服务器的数据作为 URL 地址的一部分;
RESTful 风格中不存在动词形式的路径,如updateUser表示修改用户,是一个动词,要改为名词user;
RESTful 风格中的路径只存在资源名称,增删改查的操作则是通过 HTTP 的请求方式来体现;
HTTP 协议里面,有四个表示操作方式的动词:GET、POST、PUT、DELETE;
它们分别对应四种基本操作:GET 用来获取资源,POST 用来新建资源,PUT 用来更新资源,DELETE用来删除资源。
| 操作 | 传统风格 | REST风格 |
|---|---|---|
| 新增操作 | saveUser | user-->post请求方式 |
| 删除操作 | deleteUser?id=1 | user/1-->delete请求方式 |
| 修改操作 | updateUser | user-->put请求方式 |
| 查询操作 | getUserById?id=1 | user/1-->get请求方式 |
7.3、GET请求示例(不带参数)
7.3.1、页面请求示例

<a th:href="@{/user}">测试查询所有的用户信息</a>
7.3.2、控制器方法示例

@RequestMapping(value = "/user",method = RequestMethod.GET)
public String getAllUser(){
System.out.println("查询所有的用户信息-->/user-->GET");
return "success";
}
7.3.3、测试效果



7.4、GET请求示例(带参数)
7.4.1、页面请求示例

<a th:href="@{/user/1}">测试查询id为1的用户信息</a>
7.4.2、控制器方法示例

@RequestMapping(value = "/user/{id}",method = RequestMethod.GET)
public String getUserById(@PathVariable("id") Integer id){
System.out.println("根据id查询用户信息-->/user/"+id+"-->GET");
return "success";
}
7.4.3、测试效果



7.5、POST请求示例
7.5.1、页面请求示例

<form th:action="@{/user}" method="post">
<input type="submit" value="测试新增用户信息">
</form>
7.5.2、控制器方法示例

@RequestMapping(value = "/user",method = RequestMethod.POST)
public String insertUser(){
System.out.println("新增用户信息-->/user-->POST");
return "success";
}
7.5.3、测试效果



7.6、配置转换请求方式的过滤器
实际上,浏览器只支持发送 GET 和 POST 方式的请求;
SpringMVC 提供的 HiddenHttpMethodFilter 可以将 POST 请求转换为 DELETE 或 PUT 请求;
使用 HiddenHttpMethodFilter 将 POST 请求转换为 DELETE 或 PUT 请求,须满足两个条件:
a、当前请求的请求方式必须为post
b、当前请求必须传输请求参数_method满足以上条件,HiddenHttpMethodFilter 过滤器就会将当前请求的请求方式转换为请求参数_method的值,
因此请求参数_method的值才是最终的请求方式。

注意:HiddenHttpMethodFilter过滤器的顺序,要在CharacterEncodingFilter过滤器的后面
<!--配置处理请求方式的过滤器-->
<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>
7.7、PUT请求示例
7.7.1、页面请求示例

<form th:action="@{/user}" method="post">
<input type="hidden" name="_method" value="put">
<input type="submit" value="测试修改用户信息">
</form>
7.7.2、控制器方法示例

@RequestMapping(value = "/user",method = RequestMethod.PUT)
public String updateUser(){
System.out.println("修改用户信息-->/user-->PUT");
return "success";
}
7.7.3、测试效果



7.8、DELETE请求示例
7.8.1、页面请求示例

<form th:action="@{/user/2}" method="post">
<input type="hidden" name="_method" value="delete">
<input type="submit" value="测试删除id为2的用户信息">
</form>
7.8.2、控制器方法示例

@RequestMapping(value = "/user/{id}",method = RequestMethod.DELETE)
public String deleteUser(@PathVariable("id") Integer id){
System.out.println("根据id删除用户信息-->/user/"+id+"-->DELETE");
return "success";
}
7.8.3、测试效果



7.9、结合请求方式的派生注解
对于处理指定请求方式的控制器方法,SpringMVC中提供了@RequestMapping的派生注解
处理get请求的派生注解-->@GetMapping
处理post请求的派生注解-->@PostMapping
处理put请求的派生注解-->@PutMapping
处理delete请求的派生注解-->@DeleteMapping

7、SpringMVC之RESTful概述的更多相关文章
- SpringMVC实现RESTful服务
SpringMVC实现RESTful服务 这里只说service,controller层的代码.Mapper层则直接继承Mapper<T>则可以,记住mybatis-config.xml一 ...
- 基于springMVC的RESTful服务实现
一,什么是RESTful RESTful(RESTful Web Services)一种架构风格,表述性状态转移,它不是一个软件,也不是一个标准,而是一种思想,不依赖于任何通信协议,但是开发时要成功映 ...
- springmvc的RESTful风格
springmvc对RESTful得支持RESTful架构,就是目前最流行得一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以挣得到越来越多网站的采用. RESTful(即Repres ...
- 基于 springMVC 的 RESTful HTTP API 实践(服务端)
理解 REST REST(Representational State Transfer),中文翻译叫"表述性状态转移".是 Roy Thomas Fielding 在他2000年 ...
- 前后端分离开发,基于SpringMVC符合Restful API风格Maven项目实战(附完整Demo)!
摘要: 本人在前辈<从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)>一文的基础上,实现了一个基于Spring的符合REST风格的完整Demo,具有MVC分层结构并 ...
- 【SpringMVC】RESTful支持
一.概述 1.1 什么是RESTful 1.2 URL的RESTful实现 二.演示 2.1 需求 2.2 第一步更改DispatcherServlet配置 2.3 第二步参数通过url传递 2.4 ...
- spring 3.0 应用springmvc 构造RESTful URL 详细讲解
在线springmvc_rest demo 由于下一版本的rapid-framwork需要集成spring RESTful URL,所以研究了一下怎么搭建. 并碰到了一下问题. springmvc 3 ...
- springMVC学习--RESTful支持
简介 RESTful架构,就是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越多网站的采用.RESTful(即Representational State T ...
- SpringMVC实现Restful风格的WebService
1.环境 JDK7 MyEclipse2014 tomcat8 maven 3.3.3 spring4.1.4 2.创建maven工程 使用MyEclipse创建maven工程的方式可以参考这篇博文( ...
- Springmvc构造RESTful详细讲解
Rest介绍 /blog/1 HTTP GET => 得到id = 1的blog/blog/1 HTTP DELETE => 删除 id = 1的blog/blog/1 HTTP PUT ...
随机推荐
- 【WPF】Dispatcher 与消息循环
这一期的话题有点深奥,不过按照老周一向的作风,尽量讲一些人鬼都能懂的知识. 咱们先来整个小活开开胃,这个小活其实老周在 N 年前写过水文的,常阅读老周水文的伙伴可能还记得.通常,咱们按照正常思路构建的 ...
- Java扫描文件目录大小及递归扫描
#Java扫描文件目录大小及递归扫描 package com.example.core.mydemo; import org.apache.commons.io.FileUtils; import j ...
- python 日志写入文件,参数说明及动态判断文件是创建还是追加
import logging import os ''' 格式符 含义 %(levername)s 日志级别名称 %(pathname)s 当前执行程序的路径(即脚本所在的位置) %(filename ...
- Timing!!!
End or Beginning "毕业",一个令人无限憧憬的具象化名词.适逢高考结束,又有一批人将奔赴更远的地方,离开他们生活了十八年的城市,在这之中亦然有着曾经的我们.但大家把 ...
- 2024年软件架构趋势之AI与机器学习的关系
在当下这个信息爆炸的时代,我们经常会听到"AI"和"机器学习"这两个词.它们似乎总是携手出现,让人觉得它们就是一对不可分割的"好基友".但你 ...
- 17-Docker镜像和容器操作
镜像 拉取镜像(下载镜像) 镜像是层次型的,拉取的时候会按照各层分别拉取. 每一个镜像都有自己的散列值,用来唯一标记一层镜像,可以用来判断本地是否已经拉取过此镜像层,如果已经拉取,则直接使用. doc ...
- Chrome插件:Vue.js Devtools 高效地开发和调试
在现代前端开发中,Vue.js因其灵活性和性能优势,受到越来越多开发者的青睐.然而,随着项目规模的扩大,调试和优化变得愈发复杂.幸运的是,Vue.js Devtools的出现,为开发者提供了一套强 ...
- Linux内核:通知链 机制
Linux内核:通知链 机制 背景 在驱动分析中经常看到fb_notifier_callback,现在趁有空学习一下. 参考: https://www.cnblogs.com/armlinux/arc ...
- mtr和traceroute的区别,以及为什么traceroute不显示路径mtr却可以显示路径
最近工作主要都是网络策略的开通和网络测试,在测试的过程当中发现当网络不通时,用traceroute来看路由路径的时候总是无法显示出来,于是就换了个工具-mtr,发现mtr可以正常显示出路由路径,帮助我 ...
- sql-labs通关笔记(上)
sql-labs通关笔记(上) 这里我们先只讲解less-1到less-9 联合查询注入 Less-1:GET -Error based.Single quotes -string 界面 在url中加 ...