Перехват метода или проверка параметров запроса в контроллере Sitebricks - PullRequest
6 голосов
/ 20 марта 2019

Я использую Sitebricks с Guice для реализации службы REST, и у меня есть такой набор методов:

@Get
@At("/:version/har/mostRecentEntry/assertResponseTimeWithin")
public Reply<?> doSomething(@Named("version") int version, Request<String> request) {
// Validation logic for request parameters ...

// Extracting parameters (converting url params to domain area objects)

// Actual business logic
}

, что приводит к большому количеству копируемого / вставляемого кода.

Я ищу способ отделить общую проверку и извлечение логики данных из параметров запроса.Возможно, я могу использовать AOP для этого, но, может быть, есть более простой способ, который предоставляет Sitebricks?

1 Ответ

4 голосов
/ 29 марта 2019

Несколько соображений:

  • Проект Google Sitebricks мертв
  • официальный сайт недоступен (sitebricks.org)
  • последний коммит Github - 2015

Я рекомендую , а не построить что-либо с этой структурой.

Вы должны определенно рассмотреть альтернативы для реализации служб REST (например, SpringBoot ).

может быть, есть более простой способ, который предоставляет Sitebricks?

При этом Sitebricks, похоже, не предлагает валидацию из коробки.

Код, который вы можете найти в валидации в Sitebrick:

@ImplementedBy(AlwaysValidationValidator.class)
public interface SitebricksValidator {

    Set<? extends ConstraintViolation<?>> validate(Object object);

}

и это:

public class AlwaysValidationValidator implements SitebricksValidator {

    @Override
    public Set<? extends ConstraintViolation<?>> validate(Object object) {
        return null; //unfinished
    }

}

Это незаконченная реализация!

Ваш лучший вариант - использовать валидацию javax в автономной настройке . Сюда входит hibernate-validator + javax expression language - эталонная реализация JSR 380. Он имеет множество встроенных ограничений (например, @NotNull, @Size и т. Д.) И extensible - вы можете создавать свои собственные ограничения, реализующие правильные интерфейсы (часть AOP обрабатывается рамками).

Более простой альтернативой являются Предварительные условия Guava .

...