一、參數的意義
deletemapping作為Java中DeleteMapping註解的一種,與RequestMapping註解類似,可以處理HTTP DELETE請求,但主要用於刪除資源、數據。deletemapping的參數支持以下幾種形式:
@DeleteMapping("/users/{userId}")
上面的參數表明,在/users/路徑下接收DELETE請求並且需要傳入“userId”參數。其中{}括起來的參數是一個佔位符,Spring會自動將佔位符中的內容,作為@PathVariable註解的value屬性的值。可以用來創建RESTful風格的API,使用URL模板路徑和佔位符來處理請求。
二、多參數的使用
在服務端的業務操作中,往往需要多個參數進行操作。那麼我們將多個參數傳遞給控制層,該如何處理呢?deletemapping傳遞多個參數的方式有兩種:
1.使用@RequestParam
@RequestParam表示業務方法參數位於HTTP請求URI字符串中,但是並不是通過佔位符執行的,而是作為請求參數通過查詢字符串進行傳遞。@RequestParam註解的value屬性即表示請求參數名稱,Spring MVC框架通過該屬性的指定值進行請求參數獲取,如果value屬性值為空或者省略,Spring MVC默認採用的是形參的名稱。
@DeleteMapping("/example")
public String deletemapping(@RequestParam("id") Long id,
@RequestParam("name") String name)
如上所示,我們在參數前面加上@RequestParam註解,後面的括號中的值則是請求參數名稱。如果請求參數名稱與形參名相同也可以直接寫成@RequestParam註解。
2.使用@PathVariable
@PathVariable用於將URI模板中的變量映射到方法參數上。
@DeleteMapping("/example/{id}/{name}")
public String deletemapping(@PathVariable Long id, @PathVariable String name)
如上例,我們只需要在變量前面加上@PathVariable註解,Spring會自動將佔位符中的內容,作為@PathVariable註解的value屬性的值,然後將該值與形參進行綁定。
三、參數的傳遞方式
一般來說,提交數據有兩種方式,post和get。在刪除操作中,因為涉及到資源的刪除,而刪除操作必須使用HTTP協議中的DELETE方法才能達到預期的效果。因此,deletemapping註解只支持DELETE方法。此時,有必要提到一個問題:在使用delete方法的時候,參數的傳遞方式該如何確定?
1.使用請求參數
請求參數是一般情況下最常用的數據傳遞方式,它是通過HTTP請求的查詢字符串中傳遞的。在使用DELETE方法的時候,同樣支持在查詢字符串中傳遞請求參數。在Spring MVC框架中,使用@RequestParam註解的方式即可接收查詢字符串中的參數。
2.使用請求體
在HTTP協議中,請求體可用來作為數據的載體,它可以傳遞各種格式的數據,包括JSON格式和XML格式等。在Spring MVC框架中,如果需要接收請求體中的參數,可以使用@RequestBody註解。
@DeleteMapping("/example")
public String deletemapping(@RequestBody User user) {
userService.deleteUserById(user.getId());
return "success";
}
如上示例,我們可以使用@RequestBody註解將User對象以JSON格式提交到服務端,Spring MVC將會自動將請求體中的內容轉換成Java對象,並將其綁定到方法參數上。
四、動態URL的處理
在RESTful風格的API開發中,請求URL經常需要包含動態的Path變量,如下所示:
@DeleteMapping("/example/{id}")
public String delete(@PathVariable("id") String id) {
userService.delete(id);
return "success";
}
如上所示,我們可以在deletemapping註解的URL路徑中定義動態的Path變量,路徑形式為“/{variable}”,其中variable即為動態變量。
五、完整示例代碼
下面是一個使用deletmapping進行參數傳參的完整示例代碼,供大家參考:
@RestController
@RequestMapping("/example")public class DeleteMappingController {
@DeleteMapping("/user/{id}")
public String deleteMappingPathVariable(@PathVariable Long id) {
//業務實現
return "刪除成功!";
}
@DeleteMapping(value = "/user")
public String deleteMappingRequestParam(@RequestParam(value="id") Long id) {
//業務實現
return "刪除成功!";
}
}
原創文章,作者:BKJRJ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/370870.html