目录

  • 1、RESTful概念
  • 2、RESTful功能
  • 3、对比:传统方式操作资源
  • 4、SpringMVC实现传统方式操作资源
  • 5、使用RestFul操作资源
  • 6、SpringMVC实现RESTful操作资源
  • 7、总结

1、RESTful概念

Restful就是一个资源定位资源操作的风格。

  • 不是标准也不是协议,只是一种风格
  • 基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

2、RESTful功能

  • 资源:互联网所有的事物都可以被抽象为资源
  • 资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。
  • 分别对应 添加删除修改查询

3、对比:传统方式操作资源

通过不同的参数来实现不同的效果!

http://127.0.0.1/user/query?id=1 ;查询用户(GET)http://127.0.0.1/user/add ;新增用户(POST)http://127.0.0.1/user/update ;更新用户(POST)http://127.0.0.1/user/delete?id=1 ;删除用户(GET或POST)

分析:

  • 这种方式请求方式单一,只有 postget 两种请求方式
  • 且不太安全,传入的参数和名称,直接暴露在url中
  • 若想实现不同的业务,每次发起不同的请求,就对应了不同处理代码:
    • 例如要查询用户,则通过GET方式请求/query路径,对应相应的处理代码
    • 例如要新增用户,则通过POST方式请求/add路径,对应相应的处理代码
    • 例如要更新用户,则通过POST方式请求/update路径,对应相应的处理代码
    • 例如要删除用户,则通过POST/GET方式请求/update路径,对应相应的处理代码

4、SpringMVC实现传统方式操作资源

我们在上述实验环境用注解开发SpringMVC详细配置中进行测试

HelloController.java 中添加一个add方法

目的:传入两个参数,在页面上显示两数的和

@RequestMapping("/add")
public String add(int a, int b, Model model) {int result = a + b;model.addAttribute("msg", "结果为" + result);return "hello";
}

我们测试运行:通过传统的方式操作资源,访问http://localhost:8080/add?a=1&b=2

成功显示结果,如果我们想通过RestFul方式实现呢?

5、使用RestFul操作资源

可以通过不同的请求方式来实现不同的效果!

  • GET:用于查询资源

  • POST:用于创建资源

  • PUT:用于更新服务端的资源的全部信息

  • PATCH:用于更新服务端的资源的部分信息

  • DELETE:用于删除服务端的资源。

如下:请求地址一样,但是功能可以不同!

http://127.0.0.1/user/1 ;查询用户(GET)http://127.0.0.1/user ;新增用户(POST)http://127.0.0.1/user ;更新用户(PUT)http://127.0.0.1/user/1 ;删除用户(DELETE)

分析:

  • RESTful风格很简单,想要实现不同的功能,直接设置不同的请求方式

    • 例如要查询用户,就使用GET请求
    • 例如要新增用户,就使用POST请求
    • 例如要更新用户,就使用PUT请求
    • 例如要删除用户,就使用DELETE请求
  • RESTful相比传统方式更加安全,没有暴露处传入参数的名称

6、SpringMVC实现RESTful操作资源

接下来我们使用RestFul风格操作资源做相应的测试,同样求两个数的加和显示

  1. 在传入前端的每个参数前面增加@PathVaribale注解
  2. @RequestMapping注解中加上取参数符号
@RequestMapping("/add/{a}/{b}")
public String add(@PathVariable int a, @PathVariable int b, Model model) {int result = a + b;model.addAttribute("msg", "结果为" + result);return "hello";
}

重新启动Tomcat运行测试,访问http://localhost:8080/add/1/2

成功显示,这就是通过RestFul风格操作资源,传入的1对应了a的值,传入的2对应了b的值

我们知道,所有地址栏请求默认都会是 HTTP GET 类型的,那如果我们想使用其他的请求方式呢?

其中RequestMethod是一个枚举类,其中内置了很多请求的类型

我们修改以下代码,在@RequestMapping注解中设置method属性为指定的请求类型,这里设置为DELETE

@RequestMapping(value = "/add/{a}/{b}", method = RequestMethod.DELETE)
public String add(@PathVariable int a, @PathVariable int b, Model model) {int result = a + b;model.addAttribute("msg", "结果为" + result);return "hello";
}

再次重启Tomcat运行测试,同样请求http://localhost:8080/add/1/2

发现报错,这是因为这个请求应该是以GET方式进行请求的,而我们设置成DELETE方式

此时,设置method请求类型为GET,再次重启Tomcat运行测试,即可正确显示

@RequestMapping(value = "/add/{a}/{b}", method = RequestMethod.GET)
public String add(@PathVariable int a, @PathVariable int b, Model model) {int result = a + b;model.addAttribute("msg", "结果为" + result);return "hello";
}

同样,我们可以设置多个方法,在@RequestMapping中设置value访问路径为同一个路径,但是设置请求方式为不同的请求方式,这就上述请求地址一样,但是功能不同的实现;

7、总结

Spring MVC 的 @RequestMapping 注解能够处理 HTTP 请求的方法, 比如 GET, PUT, POST, DELETE 以及 PATCH。

还有一些组合注解,是方法级别的注解变体:

@GetMapping //使用Get方式请求
@PostMapping //使用Post方式请求
@PutMapping //使用Put方式请求
@DeleteMapping //使用Delete方式请求
@PatchMapping //使用Patch方式请求

如:以下代码就设置了通过GET方式进行请求,就不用通过@RequestMapping的method属性设置了

  • 等价于是 @RequestMapping(method =RequestMethod.GET) 的一个快捷方式。
@GetMapping("/hello")
public String hello2(Model model) {model.addAttribute("msg", "This is the second request");return "hello";
}

RESTful风格及其SpringMVC实现相关推荐

  1. RESTful风格的springMVC

    一.概念 了解REST得知道5个名字: 1.资源 Resource 资源就是服务器上获取到的东西都可以说是资源,一条用户记录,一个用户的密码,一张图片等等都是 2.资源的表述 Representati ...

  2. Restful风格的springMVC配搭ajax请求的小例子

    1. GET请求的例子 ajax代码: 请求参数拼接在url后面(参数在服务器可通过HttpServletRequest获取,也可以直接通过@RequestParam自动注入,参考DELETE例子的方 ...

  3. SpringMVC响应Restful风格请求404

    一.问题 在学习Springmvc时,使用Restful风格的url,页面提示404错误.为找到原因,编写一个简单的Restful测试用例如下: jsp页面: <a href="use ...

  4. springMVC获取异步请求的参数,返回异步请求数据(json),跨域访问简单了解,文件上传,与Restful风格

    springMVC获取异步请求的参数 JQuery发送异步请求回顾 <a href="javascript:void(0);" id="testAjax" ...

  5. SpringMVC的请求-获得请求参数-Restful风格的参数的获取

    Restful是一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.主要用于客户端和服务器交互类的软件,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存机制等. Res ...

  6. restful get不传参数404_你知道什么是 Restful 风格吗?SpringMVC 带我们实现它!

    Restful 风格的 API 是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓 ...

  7. springmvc(6)乱码及restful风格

    1.乱码的解决:通过过滤器解决乱码:springmvc 提供 CharacterEncodingFilter解决post乱码: <filter><filter-name>enc ...

  8. SpringMVC中RestFul风格

    先说一下什么是RestFul风格,以一个链接为例子,如果我们访问一个网页,想要给a和b传参数,传统的方式是?a=1&b=2,而RestFul就是改变了传统的方式,用/a/1/2的形式,达到了简 ...

  9. 【SpringMVC 笔记】控制器 Controller 与 RestFul 风格

    SpringMVC 笔记 控制器 Controller 实现 Controller 接口 创建控制器 @Controller 注解创建控制器 @RequestMapping 使用 method 属性指 ...

最新文章

  1. SharpGL学习笔记(一) 平台构建与Opengl的hello World
  2. 链表——PowerShell版
  3. mysql 5.6密钥_MySQL的密钥文件不正确
  4. Apache ab 压力并发测试工具
  5. 全球编程厉害的14位大佬
  6. java学习顺序_Java学习心得及学习顺序
  7. freemarker面试_SpringBoot基础面试题
  8. winxp升级win7教程_专业的动画制作软件Animate cc 2019下载和安装教程
  9. 概率论在计算机科学的应用讲座,概率论导论(翻译版)
  10. 3D建模都用哪些软件?
  11. 摄影基础知识(光圈、快门、感光度等)
  12. Vue使用Echarts控件实现图表设计
  13. CAtia_打开提示:许可证过期怎么办
  14. Windows10 安装spyder
  15. 深度学习框架tensorflow学习与应用——代码笔记11(未完成)
  16. C# Excel 为图表添加模拟运算表
  17. Ajax传递数组乱码,layUI批量删除时乱码
  18. cad指北针lisp_用CAD里的LISP画图,题目如图片,编写一程序,可在任意位置任意方向绘制指定大小的指北针。...
  19. okl4 linux,数据接入 API
  20. 江南大学计算机水平怎么样,江南大学在211中什么水平?无锡人眼中的江南大学怎么样?...

热门文章

  1. Sentinel 高可用流量管理框架
  2. 2022-2028年中国汽车制动器行业投资分析及前景预测报告
  3. 2022-2028年中国互联网+不良资产处置行业深度调研及投资前景预测报告
  4. Ubuntu 16.04 安装后修改屏幕分辨率(xrandr: Failed to get size of gamma for output default)
  5. 通俗解释指数加权平均
  6. Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow pip命令...
  7. LeetCode简单题之判断字符串的两半是否相似
  8. TensorRT PoolingLayer
  9. 推荐系统的个性化排名
  10. 2021年大数据ELK(六):安装Elasticsearch