• 3、REST风格的URL


    1、概述

      HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE,它们分别对应四种基本的操作,GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。
        
        示例:
        —— /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   

    2、如何发送一个PUT和DELETE请求?
        常见的有post和get请求,那么怎么弄一个put和delete请求出来呢?浏览器的form表单只支持GET和POST请求,而DELETE和PUT请求并不支持。为解决这个题,Spring3.0添加了一个 HiddenHttpMethodFilter 过滤器,可以将带有_method参数的http post请求转换为put或delete请求。从而解决问题。

      如何发送PUT和DELETE请求呢?

      ①、需要在web.xml文件中配置一个HiddenHttpMethodFilter:

    <!-- 配置org.springframework.web.filter.HiddenHttpMethodFilter:可以把POST请求转化为DELETE或PUT请求 -->
    <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>

      ②、需要发送post请求

      ③、在发送post请求时携带一个 name="_method" 的隐藏域,其值为delete或者是put。如下:

    <!-- 发送put请求 -->
    <form action="rest/put/1" method="post">
        <input type="hidden" name="_method" value="put" >
        <input type="submit" value="3、tetRest PUT请求">
    </form>
        
    <!-- 发送delete请求 -->
    <form action="rest/delete/1" method="post">
        <input type="hidden" name="_method" value="delete" >
        <input type="submit" value="4、tetRest DELETE请求">
    </form>

      ④、在接受PUT或DELETE请求方法的注解@RequestMapping中设定method为PUT或DELETE,如下:

    @RequestMapping(value="/rest/put/{id}", method=RequestMethod.PUT)
    public String testRestPut(@PathVariable Integer id){
        System.out.println("testRestPut 方法,响应PUT请求。id = " + id);
            
        return SUCCESS;
    }
        
    @RequestMapping(value="/rest/delete/{id}", method=RequestMethod.DELETE)
    public String testRestDelete(@PathVariable Integer id){
        System.out.println("testRestDelete 方法,响应DELETE请求。id = " + id);
            
        return SUCCESS;
    }
  • 相关阅读:
    Linux 禁用ipv6
    【搬运】Get Log Output in JSON,通过Log4j2与Logback输出JSON格式日志
    Gnome禁用tracker-miner-apps、tracker-miner-fs、tracker-store
    Sentry错误日志监控你会用了吗?
    django执行源生的mysql语句
    django实现自定义manage命令的扩展
    C++教程详解
    python数据分析教程大全
    将mysql主键id从1开始 变为自增
    django restful framework教程大全
  • 原文地址:https://www.cnblogs.com/lj95801/p/4951255.html
Copyright © 2020-2023  润新知