Class CommentController

java.lang.Object
ru.skypro.homework.controller.CommentController

@RestController @RequestMapping("/ads") public class CommentController extends Object
Контроллер для управления комментариями.

Обрабатывает HTTP-запросы для создания, получения, обновления и удаления комментариев.

  • Constructor Details

    • CommentController

      public CommentController()
  • Method Details

    • getComments

      @GetMapping("/{id}/comments") public Comments getComments(@PathVariable int id)
      Получение комментариев объявления.
      Endpoint: GET /ads/{id}/comments
      Parameters:
      id - идентификатор объявления
      Returns:
      объект Comments с информацией об общем количестве комментариев и их список
    • addComment

      @PostMapping("/{id}/comments") public Comment addComment(@PathVariable int id, @RequestBody CreateOrUpdateComment comment)
      Добавление комментария к объявлению.
      Endpoint: POST /ads/{id}/comments
      Parameters:
      id - идентификатор объявления
      comment - текст комментария
      Returns:
      объект Comment с информацией о комментарии
    • deleteComment

      @DeleteMapping("/{adId}/comments/{commentId}") @PreAuthorize("hasAuthority(\'ROLE_ADMIN\') or @commentService.isCommentAuthor(#adId, #commentId, authentication.principal.username)") public void deleteComment(@PathVariable int adId, @PathVariable int commentId)
      Удаление комментария.
      Доступ к методу имеет пользователь с ролью ADMIN, либо автор комментария.
      Endpoint: DELETE /ads/{adId}/comments/{commentId}
      Parameters:
      adId - идентификатор объявления
      commentId - идентификатор комментария
    • updateComment

      @PatchMapping("/{adId}/comments/{commentId}") @PreAuthorize("@commentService.isCommentAuthor(#adId, #commentId, authentication.principal.username)") public Comment updateComment(@PathVariable int adId, @PathVariable int commentId, @RequestBody CreateOrUpdateComment comment)
      Обновление комментария.
      Доступ к методу имеет только автор комментария.
      Endpoint: PATCH /ads/{adId}/comments/{commentId}
      Parameters:
      adId - идентификатор объявления
      commentId - идентификатор комментария
      comment - текст нового комментария
      Returns:
      объект Comment с информацией о новом комментарии