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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM