Контроллер принимает/возвращает только сущности.- Использвоать DTO для получения и отправки запроса.
- Не использовать название CRUD операций в контроллере, такие как : add, remove и прочее.
- В пути вместо _ использовать -.
- При необходимости создания сортировочных/отборочных контроллеров параметры передавать через RequestParam.
- При изменении PUT MAPPING всей сущности возвращать HTTP STATUS NO CONTENT(204).
При изменении PATCH MAPPING полей сущности (В запросе должны быть перечислены только поля, подлежащие изменению) возвращать измененную сущность и HTTP STATUS OK(200).- При добавлении POST MAPPING сущности возвращать путь к сущности в заголовке Location ("/api/entity/{id}") и HTTP STATUS CREATED(201).
- При удалении DELETE MAPPING сущности возвращать HTTP STATUS NO CONTENT(204).
- При поиске GET MAPPING сущности возвращать сущность и HTTP STATUS OK(200).
- Публичный метод сервиса всегда должен что-то возвращать.
- Сервис должен принимать/возвращать сущность.
Пример
Имеется RoleService, контракт его метода add:
Role add(Role role); - На уровне сервиса происходит валидация сущностей.
- При возвращении одиночной сущности в репозитории возвращается Optional.
- Нативные запросы осуществлять через HSL.
- Нативные запросы, оформленные с помощью nativeQuery = true необходимо отбражать с помощью CriteriaBuilder.
- Перевод сущности в DTO и обратно происходит на уровне контроллеров.