Java for Beginner
672 subscribers
541 photos
155 videos
12 files
827 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Аннотации @GetMapping, @PostMapping, @PutMapping и @DeleteMapping

Аннотации @GetMapping, @PostMapping, @PutMapping и @DeleteMapping появились в Spring для упрощения работы с REST-запросами, предоставляя более удобную альтернативу @RequestMapping. Эти аннотации помогают однозначно указывать HTTP-метод для каждого действия, что делает код более читабельным и легко поддерживаемым.

1. Обзор аннотаций для HTTP-методов

Эти аннотации представляют собой более специфичные версии @RequestMapping, где HTTP-метод указывается непосредственно в названии аннотации:
@GetMapping — для обработки GET-запросов.
@PostMapping — для обработки POST-запросов.
@PutMapping — для обработки PUT-запросов.
@DeleteMapping — для обработки DELETE-запросов.

2. @GetMapping — маппинг GET-запросов

@GetMapping упрощает обработку GET-запросов, которые обычно используются для получения данных.
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping("/products")
public class ProductController {

@GetMapping("/{id}")
public String getProductById(@PathVariable("id") int id, Model model) {
// Логика для получения продукта по ID
model.addAttribute("product", productService.findProductById(id));
return "productDetails";
}

@GetMapping
public String listProducts(Model model) {
model.addAttribute("products", productService.getAllProducts());
return "productList";
}
}
В этом примере @GetMapping("/{id}") маппит GET-запрос на URL /products/{id}, а второй @GetMapping без параметров обрабатывает запросы к /products, возвращая список всех продуктов.


3. @PostMapping — маппинг POST-запросов

@PostMapping применяется для создания новых данных или для действий, которые изменяют состояние на сервере.
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ModelAttribute;

@Controller
@RequestMapping("/products")
public class ProductController {

@PostMapping("/add")
public String addProduct(@ModelAttribute("product") Product product) {
productService.saveProduct(product);
return "redirect:/products";
}
}
Здесь @PostMapping("/add") маппит POST-запрос для добавления нового продукта. Метод addProduct сохраняет продукт и перенаправляет пользователя на список всех продуктов.


4. @PutMapping — маппинг PUT-запросов

@PutMapping используется для обновления существующих данных. Обычно применим для RESTful API.
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;

@RestController
@RequestMapping("/products")
public class ProductController {

@PutMapping("/{id}")
public ResponseEntity<String> updateProduct(@PathVariable("id") int id, @RequestBody Product product) {
productService.updateProduct(id, product);
return ResponseEntity.ok("Product updated successfully");
}
}
Здесь @PutMapping("/{id}") обрабатывает PUT-запросы для обновления продукта с указанным ID. Аннотация @RequestBody позволяет получить данные JSON, отправленные в запросе, и преобразовать их в объект Product.


5. @DeleteMapping — маппинг DELETE-запросов

@DeleteMapping отвечает за удаление данных и часто используется в RESTful API для реализации операций удаления.
import org.springframework.web.bind.annotation.DeleteMapping;

@RestController
@RequestMapping("/products")
public class ProductController {

@DeleteMapping("/{id}")
public ResponseEntity<String> deleteProduct(@PathVariable("id") int id) {
productService.deleteProduct(id);
return ResponseEntity.ok("Product deleted successfully");
}
}
В данном примере @DeleteMapping("/{id}") обрабатывает DELETE-запрос для удаления продукта с заданным ID.


#Java #Training #Spring #GetMapping, #PostMapping, #PutMapping и #DeleteMapping