@RequstMapping、@GetMapping、@PostMapping三者區別聯系


@RequestMapping

一般情況下都是用@RequestMapping(method=RequestMethod.),因為@RequestMapping可以直接替代以上兩個注解。

@GetMapping

是一個組合注解,用於將HTTP GET請求映射到特定處理程序方法的注釋。是@RequestMapping(method = RequestMethod.GET)的縮寫。

@PostMapping

是一個組合注解,用於將HTTP POST請求映射到特定處理程序方法的注釋。是@RequestMapping(method = RequestMethod.POST)的縮寫。

Get方法

獲取資源信息,就像數據庫查詢一樣,不會修改和增加數據

POST方法

向服務器提交數據,比如完成表單數據的提交,將數據提交給服務器處理

PUT方法

讓服務器用請求的主體部分來創建一個由所請求的URL命名的新文檔;如果那個文檔存在的話,就用這個主體來代替它。

DELETE方法

請求服務器刪除指定URL所對應的資源。但是,客戶端無法保證刪除操作一定會被執行,因為HTTP規范允許服務器在不通知客戶端的情況下撤銷請求。

番外篇:

“@RequestMapping”請求路徑映射,如果標注在某個controller的類級別上,則表明訪問此類路徑下的方法都要加上其配置的路徑;最常用是標注在方法上,表明哪個具體的方法來接受處理某次請求。

@Controller
@RequestMapping(value="/book")
public class BookController {
    
    @RequestMapping(value="/title")
    public String getTitle(){
        return "title";
    }
    
    @RequestMapping(value="/content")
    public String getContent(){
        return "content";
    }

由於BookController類加了value="/book"的“@RequestMapping”的注解,所有相關路徑都要加上"/book",即請求的url分別為:

  1. http://localhost:8080/book/title
  2. http://localhost:8080/book/content

"@RequestMapping"的value值前后是否有“/”對請求的路徑沒有影響,即value="book" 、"/book"、"/book/"其效果是一樣的

"@RequestMapping" 的屬性

  • value: 指定請求的實際url
    1. 普通的具體值。如前面的value="/book"。
    2. 含某變量的一類值
@RequestMapping(value="/get/{bookId}")
    public String getBookById(@PathVariable String bookId,Model model){
        model.addAttribute("bookId", bookId);
        return "book";
}

路徑中的bookId可以當變量,@PathVariable 注解即提取路徑中的變量值

3.ant風格
@RequestMapping(value="/get/id?"):可匹配“/get/id1”或“/get/ida”,但不匹配“/get/id”或“/get/idaa”;
@RequestMapping(value="/get/id*"):可匹配“/get/idabc”或“/get/id”,但不匹配“/get/idabc/abc”;
@RequestMapping(value="/get/id/*"):可匹配“/get/id/abc”,但不匹配“/get/idabc”;
@RequestMapping(value="/get/id/**/{id}"):可匹配“/get/id/abc/abc/123”或“/get/id/123”,也就是Ant風格和URI模板變量風格可混用;

4. 含正則表達式的一類值
@RequestMapping(value="/get/{idPre:\\d+}-{idNum:\\d+}"):可以匹配“/get/123-1”,但不能匹配“/get/abc-1”,這樣可以設計更加嚴格的規則。
可以通過@PathVariable 注解提取路徑中的變量(idPre,idNum)

5. 或關系
@RequestMapping(value={"/get","/fetch"} )即 /get或/fetch都會映射到該方法上

  • method:  指定請求的method類型, GET、POST、PUT、DELETE等;
    @RequestMapping(value="/get/{bookid}",method={RequestMethod.GET,RequestMethod.POST})

  • params
    @RequestMapping(params="action=del"),請求參數包含“action=del”,如:http://localhost:8080/book?action=del

  • headers
    @RequestMapping(value="/header/id", headers = "Accept=application/json"):表示請求的URL必須為“/header/id 且 請求頭中必須有“Accept =application/json”參數即可匹配。


免責聲明!

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



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