SpringMVC-RestFul

90 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

概念

REST全称 Representaional State Transfer(资源表现层状态转换)

Restful风格的 URL 参数:通过“/”路径的方式来传输请求的参数

原始url:http://localhost:8080/index?id=1

rest方式:http://localhost:8080/index/1

@PathVariable注解

当我们需要获取可变路径时,就可以使用@PathVariable

@RequestMapping注解的value属性中通过{xxx}表示传输的数据,再通过 @PathVariable注解将数据赋值给方法的形参

@RequestMapping("/testRest/{id}")
public String testRest(@PathVariable("id") String id){
    System.out.println("id:"+id");
    return "success";
}
//最终输出的内容为-->id:1
  • 也可以理解为这是一层路径的占位符

REST将每一个URI都看作是一个资源,这是一个概念,实际可以是一个图片,一条记录,一组记录都可以; 每一种请求方法都对应着对某个资源的操作,通常包含以下四种表现形式:

  • GET 获取资源
  • PUT 更新资源
  • POST 提交资源
  • DELETE 删除资源

假设我们将id为1的用户数据看做是一个资源,那么我们要在前台操作这个资源时就要向服务器发送能够定位这个资源的请求地址,如:http://localhost:8080/SSMDemo/user/1 ,通过URI找到资源后,我们还要告诉服务器我们要对这个资源进行什么样的操作,就通过HTTP的请求方法;如GET

简单的说:RESTful就是用简介的URL提交请求,还有请求方式来区分对资源做何种操作。


实现PUT和DELETE请求

传统的 Web 开发中,from 只⽀持 GET 和 POST,不⽀持 DELETE 和 PUT,如何解决?通过添加 HiddenHttpMethodFilter 过滤器,可以将 POST 请求转为 PUT 或者 DELETE。

HiddenHttpMethodFilter

HiddenHttpMethodFilter 的实现原理 HiddenHttpMethodFilter 检测请求参数重是否包含_method 参数,如果包含则取出它的值,并且判断请求类型之后完成请求类型的转换

步骤1:在 form 表单中添加隐藏域标签,name 为 _method,value 为 DELETE/PUT。

步骤 2:web.xml 中配置 HiddenHttpMethodFilter

步骤3:在handler编写Mapping

    @PutMapping("/update")
    @ResponseBody
    public String update(HttpServletResponse response){
        response.setCharacterEncoding("UTF-8");
        return "已接收到PUT请求";
    }

    @DeleteMapping("/delete")
    @ResponseBody
    public String delete(HttpServletResponse response){
        response.setCharacterEncoding("UTF-8");
        return "已接收到DELETE请求";
    }
  • 这里是最简单的示例,如果要在handler中处理资源,可以搭配注解@PathVariable