美文网首页
SpringMVC 配置实现 REST 风格

SpringMVC 配置实现 REST 风格

作者: 得瑟的小蚂蚁 | 来源:发表于2018-11-20 20:17 被阅读6次
一、 REST 简介
  • REST:即 Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用
  • HTTP 协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET 用来获取资源,POST 用来新建资源,PUT 用来更新资源,DELETE 用来删除资源。

REST 请求风格如下:

    /order/1 HTTP GET :得到 id = 1 的 order
    /order/1 HTTP DELETE:删除 id = 1的 order
    /order/1 HTTP PUT:更新id = 1的 order
    /order HTTP POST:新增 order
二、 SpringMVC 配置 REST 风格 URL
  1. 首先要在 Web.xml 中配置 HiddenHttpMethodFilter(可以把 post 请求转化为 Put 和 DELETE 请求)
    <!-- 
    配置 org.springframework.web.filter.HiddenHttpMethodFilter: 可以把 POST 请求转为 DELETE 或 POST 请求 
    -->
    <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>
  1. DELETE 、PUT请求的表单中需要加入 名字为 _method 的隐藏域:
    <form action="springmvc/testRest/1" method="post">
        <input type="hidden" value="DELETE" name="_method"/>
        <input type="submit" value="testRest DELETE"/>
    </form>
    <br><br>
    <form action="springmvc/testRest/1" method="post">
        <input type="hidden" value="PUT" name="_method"/>
        <input type="submit" value="testRest PUT"/>
    </form>

GET 和 POST 如下:

    <a href="springmvc/testRest/1">testRest GET</a>
    <br><br>
    <form action="springmvc/testRest" method="post">
        <input type="submit" value="testRest POST"/>
    </form>

处理器中的配置如下:

    @RequestMapping(value = "/testRest/{id}",method=RequestMethod.GET)
    public String testRESTGET(@PathVariable("id") Integer id){
        System.out.println("testRest GET : " + id);
        return "success";
    }
    
    @RequestMapping(value = "/testRest",method=RequestMethod.POST)
    public String testRESTPOST(){
        System.out.println("testRest POST");
        return "success";
    }
    
    @RequestMapping(value = "/testRest/{id}",method=RequestMethod.DELETE)
    public String testRESTDELETE(@PathVariable("id") Integer id){
        System.out.println("testRest DELETE : "+id);
        return "success";
    }
    
    @RequestMapping(value = "/testRest/{id}",method=RequestMethod.PUT)
    public String testRESTPUT(@PathVariable("id") Integer id){
        System.out.println("testRest PUT : "+ id );
        return "success";
    }

相关文章

网友评论

      本文标题:SpringMVC 配置实现 REST 风格

      本文链接:https://www.haomeiwen.com/subject/ueffqqtx.html