Ответ
Нет, это нарушает спецификацию HTTP и принципы REST.
- GET должен быть безопасным (safe) и идемпотентным (idempotent). Он предназначен только для получения данных и не должен изменять состояние сервера.
- Практические риски:
- Кеширование: Прокси и браузеры могут кешировать GET-запросы, что приведет к непредсказуемому поведению.
- Повторные запросы: Обновление страницы или повторная отправка ссылки вызовет операцию снова.
- Безопасность: Параметры GET видны в URL, истории браузера и логах сервера.
Неправильный подход (Spring Boot пример):
@GetMapping("/updateUser")
public void updateUser(@RequestParam Long id) {
userService.updateStatus(id); // Нарушение! Изменение состояния через GET.
}
Правильный подход: Используйте методы, предназначенные для модификации:
POST— для создания.PUT/PATCH— для обновления.DELETE— для удаления.
Пример корректного кода:
@PostMapping("/users/{id}/activate")
public ResponseEntity<Void> activateUser(@PathVariable Long id) {
userService.activate(id);
return ResponseEntity.ok().build();
}