RESTful的详解

RESTful的详解RESTful 也称为 REST 英文 Representati 即表现层状态传递 它是一种软件架构风格或设计风格 而不是一个标准

在这里插入图片描述


1. RESTful是什么?

  • RESTful 也称为REST(英文:Representational State Transfer)即表现层状态传递,它是一种软件架构风格或设计风格,而不是一个标准。



  • REST 是Roy Fielding博士在2000年他的博士论文中提出来的。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

2. 传统风格与RESTful风格对比

2.1 传统风格

2.1 RESTful风格

按照传统方式发送请求的时候比较麻烦,需要定义多种请求,而RESTful在HTTP协议中,有不同的发送请求的方式,分别是GET、POST、PUT和DELETE方式,分别对应查询、修改、添加和删除操作。我们如果能让不同的请求方式表示不同的请求类型就可以简化我们的查询。

查询用户: http://localhost:8080/springmvc/user/1 GET ­­查询
查询多个用户: http://localhost:8080/springmvc/user GET
添加用户: http://localhost:8080/springmvc/user POST ­­­添加
修改用户: http://localhost:8080/springmvc/user PUT ­­修改
删除用户:http://localhost:8080/springmvc/user DELETE ­­删除








注意:RESTful风格中的URL不存在动词形式的路径,如selectuser表示查询用户,是一个动词,要改为名词user。

3. RESTful的实现

RESTful 风格提倡URL地址使用统一的风格设计,各单词之间用斜杠分开。

3.1 GET、POST方式

3.1.1 创建控制器类

@Controller public class UserController { 
     @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 insertUser(String username,String password){ 
     System.out.println("添加用户信息:" + username + ","+ password); return "success"; } } 

3.1.2 创建一个jsp页面

  • 通过超链接的方式进行测试
<a href="${pageContext.request.contextPath}/user">查询全部</a><br> <a href="${pageContext.request.contextPath}/user/1">根据id查询信息</a><br> <form action="${pageContext.request.contextPath}/user" method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <input type="submit" value="添加"><br> </form> 
  • 运行之后可以在控制台正常输出
    在这里插入图片描述

3.2 PUT、DELETE方式

一切看起来都非常美好,但是大家需要注意了,我们在发送请求的时候只能发送post或者get,没有办法发送put和delete请求,那么应该如何处理呢?下面开始进入代码环节:

3.2.1 编写控制器方法

@RequestMapping(value = "/user",method = RequestMethod.PUT) public String updateUser(String username,String password){ 
     System.out.println("修改用户信息:" + username + ","+ password); return "success"; } @RequestMapping(value = "/user",method = RequestMethod.DELETE) public String deleteUser(String username,String password){ 
     System.out.println("删除用户信息:" + username + ","+ password); return "success"; } 

3.2.2 配置HiddenHttpMethodFilter

  • 在web.xml文件中配置HiddenHttpMethodFilter过滤器来处理put和delete请求方式
<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> 

3.2.3 编写jsp页面

处理put和delete请求方式注意事项:

  • 请求方式必须为: post
  • 请求参数必须为:_method
<form action="${pageContext.request.contextPath}/user" method="post"> <input name="_method" value="put" type="hidden"/> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <input type="submit" value="修改"><br>  
      form> <form action="${pageContext.request.contextPath}/user" method="post"> <input name="_method" value="delete" type="hidden"/> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <input type="submit" value="删除"><br>  
       form> 

测试结果:
在这里插入图片描述

3.3 Http405 解决方法

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219840.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午9:46
下一篇 2026年3月17日 下午9:46


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号