Дифференцировать Swagger UI вызов от Angular Frontend - PullRequest
0 голосов
/ 12 октября 2018

У меня есть приложение springboot и угловой интерфейс.Я использую Swagger и совершаю вызовы API из Swagger-UI, а также.Эти API представлены как @RestController, поэтому я могу также вызывать их из Angular.Прямо сейчас все мои проверки формы происходят на угловом интерфейсе и не проверяются на уровне API.Мое намерение состоит в том, чтобы разместить проверки API, но проверки будут происходить дважды, если действие выполняется с углового интерфейса (скажем, сохранение формы), сначала из пользовательского интерфейса, а затем из API.Я делаю это так, чтобы API проверял вызовы, сделанные из swagger-ui.Есть ли способ отличить, если звонок сделан от углового интерфейса или от Swagger-UI?Таким образом, я бы пропустил валидацию, если, скажем, данные формы были сохранены из внешнего интерфейса, но все же выполняют проверку на чванливые вызовы, сохраняют ее в чистоте и не изменяют никакой реализации как таковой.Сваггер предоставляет API?

Пример кода

@RestController
@Api(tags = "My api")
@RequestMapping(path = "v1/{apiKey}/myKey")
public class TestController implements TestApi {

  @Override
  public ResponseEntity<GenericResponse> saveAction(
      @ApiParam(value = "Authorization", required = true) 
      @RequestHeader(value = "Authorization", required = true) String authorization,
      @RequestBody SomeDTO someDto, @PathVariable String apiKey,
      @PathVariable String someId, HttpServletRequest request){

      // can I perform some sort of check here
      if(isFromSwagger()){
            performValidation(someDto);
      }

      GenericResponse responseDTO = new GenericResponse();
      return new ResponseEntity<>(responseDTO, responseDTO.getHttpStatusCode());
  }

1 Ответ

0 голосов
/ 12 октября 2018

В современных веб-приложениях рекомендуется проверять данные дважды:

  1. В браузере для немедленной обратной связи с пользователями.
  2. На сервере, чтобы гарантировать только действительныеданные обрабатываются далее.

Второй шаг на сервере более важен, поскольку он обеспечивает согласованность и безопасность внутренних систем.Это особенно важно для систем, где злонамеренные пользователи могут получить прибыль за манипулирование запросами, отправляемыми на серверы.

Первый шаг обычно используется только для простых проверок.

Так что я не вижу никакой причиныпочему вы не должны проверять данные во второй раз:

  • В любом случае вы выполняете проверки на стороне сервера.
  • Если данные уже были правильно проверены в браузере,оно не будет отклонено.
  • Влияние на производительность, скорее всего, будет незначительным.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...