Назад к вопросам
2gis
Senior
3
Где должна находиться бизнес-валидация (например, проверка дат, лимит бронирования на 10 дней)? В хендлере или в сервисе?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Бизнес-валидация, такая как проверка дат или ограничение бронирования на 10 дней, должна находиться в сервисном слое, а не в хендлере. Хендлер отвечает за прием и передачу данных, обработку HTTP-запросов, а сервис — за бизнес-логику и правила. Это позволяет централизовать бизнес-правила, облегчить тестирование и повторное использование логики.
Пример:
func (s *BookingService) CreateBooking(req BookingRequest) error {
if req.EndDate.Sub(req.StartDate).Hours()/24 > 10 {
return errors.New("бронирование не может превышать 10 дней")
}
// другая бизнес-логика
return s.repo.Save(req)
}
// В хендлере просто вызываем сервис
func (h *Handler) CreateBookingHandler(w http.ResponseWriter, r *http.Request) {
var req BookingRequest
// парсим запрос
err := h.service.CreateBooking(req)
if err != nil {
// обработка ошибки
}
}