Spring Boot中的RESTful API:@GetMapping, @PostMapping, @PutMapping, 和 @DeleteMapping詳解

在 Spring Boot 中,創建 RESTful API 時,控制器(Controller)類的方法可以使用特定的註解來定義 HTTP 請求方法映射。這些註解使得我們可以清晰地指定每個方法應該響應哪種類型的 HTTP 請求。以下是關於 `@GetMapping`、`@PostMapping`、`@PutMapping` 和 `@DeleteMapping` 的詳細解釋:

@GetMapping

`@GetMapping` 是用於標記一個控制器方法作爲處理 HTTP GET 請求的註解。它可以在方法級別上使用,以覆蓋類級別的默認行爲。如果需要在多個不同的 URI 上提供 GET 支持,你可以爲同一個控制器方法添加多個 `@GetMapping` 註釋,每個 `@GetMapping` 對應一個 URI。例如:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController // 表示這是一個控制器類
public class ExampleController {
// 這個方法將處理 /greeting URL 的 HTTP GET 請求
@GetMapping("/greeting")
public Greeting greeting() {
return new Greeting(1L, "Hello, World!");
}
}

在這個例子中,當客戶端發送到 `http://localhost:8080/greeting` 的 HTTP GET 請求時,Spring 將調用 `ExampleController#greeting()` 方法來處理該請求。

@PostMapping

`@PostMapping` 用於標記控制器方法來處理 HTTP POST 請求。與 `@GetMapping` 類似,你可以通過提供一個或多個 `@PostMapping` 註解來爲一個方法配置多個 URI。例如:

@RestController
public class ExampleController {
// 這個方法將處理 /create-item URL 的 HTTP POST 請求
@PostMapping("/create-item")
public Item createItem(@RequestBody Item item) {
// 假設這是一些持久化操作或者其他業務邏輯
return item; // 返回新建的項目對象
}
}

在這種情況下,任何發送到 `http://localhost:8080/create-item` 的 HTTP POST 請求都將被 Spring MVC 路由到 `ExampleController#createItem()` 方法進行處理。

@PutMapping

`@PutMapping` 用於標記控制器方法來處理 HTTP PUT 請求。PUT 請求通常用於更新資源,並且要求客戶端提供資源的完整信息。與前面提到的註解一樣,你可以爲同一方法添加多個 `@PutMapping` 來配置多個 URI。例如:

@RestController
public class ExampleController {
// 這個方法將處理 /update-item/{id} URL 的 HTTP PUT 請求
@PutMapping(value = "/update-item/{id}", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> updateItem(@PathVariable Long id, @RequestBody Item item) {
// 根據 ID 更新項目
return new ResponseEntity<>(HttpStatus.OK);
}
}

在上述示例中,HTTP PUT 請求將被髮送到 `http://localhost:8080/update-item/{id}`,其中 `{id}` 將由實際的 ID 值替換。只有當請求體包含有效的 JSON 格式且 Content-type 爲 `application/json` 時,纔會觸發此方法的執行。

@DeleteMapping

`@DeleteMapping` 用於標記控制器方法來處理 HTTP DELETE 請求。DELETE 請求主要用於刪除資源。同樣地,你可以爲同一個方法添加多個 `@DeleteMapping` 來配置多個 URI。例如:

@RestController
public class ExampleController {
// 這個方法將處理 /delete-item/{id} URL 的 HTTP DELETE 請求
@DeleteMapping("/delete-item/{id}")
public void deleteItem(@PathVariable Long id) {
// 基於 id 刪除項目
}
}

在這個例子中,HTTP DELETE 請求會被髮送到 `http://localhost:8080/delete-item/{id}`,這將導致擁有給定 `id` 的項目被刪除。

請注意,所有這些註解都是 Spring Web MVC 框架的一部分,它們使得開發者能夠輕鬆地構建 RESTful APIs,而無需編寫大量的配置代碼。此外,Spring MVC 還提供了其他有用的註解,比如 `@PatchMapping`、`@RequestParam`、`@RequestHeader` 等,可以根據需要靈活組合使用。

为您推荐