Package ru.skypro.homework.controller
Class CommentController
java.lang.Object
ru.skypro.homework.controller.CommentController
Контроллер для управления комментариями.
Обрабатывает HTTP-запросы для создания, получения, обновления и удаления комментариев.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaddComment(int id, CreateOrUpdateComment comment) Добавление комментария к объявлению.voiddeleteComment(int adId, int commentId) Удаление комментария.getComments(int id) Получение комментариев объявления.updateComment(int adId, int commentId, CreateOrUpdateComment comment) Обновление комментария.
-
Constructor Details
-
CommentController
public CommentController()
-
-
Method Details
-
getComments
Получение комментариев объявления.
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с информацией о новом комментарии
-