Запросить обработку поля тела весной - PullRequest
0 голосов
/ 06 июня 2018

Я работаю над весенним базовым веб-приложением, где у нас есть несколько RestControllers и несколько классов Request DTO.Запрос DTO содержит поле токена, которое нуждается в некоторой проверке.Поэтому я использовал пружинные валидаторы, чтобы подтвердить это.После проверки мы хотим отправить это поле во внешнюю систему, используя другой REST API (только для некоторой регистрации аналитики).Одно и то же поле повторяется в нескольких объектах DTO и их контроллерах.Таким образом, я легко могу определить аннотации для валидаторов и повторно использовать их в DTO.Но я не уверен, как обработать это поле после успешной проверки (т. Е. Вызвать API-интерфейс аналитики, чтобы использовать это поле после проверки), не смешивая его с базовой логикой контроллеров.

Подходы, о которых я мог подумать:

  1. Реализация фильтра / перехватчика и обработка поля там.Но есть ограничение, что тело запроса может быть прочитано только один раз, поэтому мне нужно использовать несколько альтернативных способов, создавая оболочки запросов.
  2. Повторите логику в каждом контроллере, и она очень подвержена ошибкам, как и для каждого нового контроллеранам нужно помнить, чтобы написать этот код.

Но ни один из этих подходов не выглядит чище.Кто-то может порекомендовать лучший способ добиться этого?

Заранее спасибо.

1 Ответ

0 голосов
/ 07 июня 2018

Вы можете создать BaseController и реализовать метод там.Расширьте это BaseController везде, где вам нужна эта служба регистрации.Как показано ниже.

BaseController.java

class BaseController {
protected void remoteLogging(String name,String token) {
//Calling the remote log services}
}

AppController.java

@Controller
@RequestMapping("register")
public class LeaseController extends BaseController {

@PostMapping("new")
public String new(@Valid @ModelAttribute("registration") Registration registration,BindingResult result){ 
if(rest.hasErrors(){
remoteLogging("name","token");
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...