Swagger не разрешает параметры для HttpServeletRequest - PullRequest
0 голосов
/ 18 мая 2019

Мне нужно принять URL в качестве параметра пути для API.Он должен принимать как закодированные, так и не закодированные URL (безопасность не имеет значения).Исходя из моего кода для ответа здесь , я использовал HttpServelet в своем коде, который выглядит следующим образом:

@GetMapping(value = "/**")
    @ApiOperation(value = "Get Page from URL")
    @Produces(MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<JSONObject> getPagebyUrl(HttpServletRequest httpServletRequest) {

        String completeUrl = httpServletRequest.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE).toString();

        String bestMatchingPattern = httpServletRequest.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE).toString();

        String extractPathWithinPattern = new AntPathMatcher().extractPathWithinPattern(bestMatchingPattern, completeUrl);

        String url = extractPathWithinPattern.replace(":/", "://");

Теперь String url имеет значение apt, когда я вызываю API, используяURI, от Почтальона, как

http://localhost:8045/v1/urls/https%3A%2F%2Fsome-url.html

//also works
http://localhost:8045/v1/urls/https://some-url.html

Однако Swagger не дает возможность передать параметр пути без использования одного из @XXXParam/Variable.

, который я узнал о @ApiImplicitParams({@ApiImplicitParam}) ипробовал то же самое, но это пока не сильно помогло.Я получаю шанс передать параметр (очевидно), но его всегда получают как null.Возможно, я неправильно его использую.

Вопросы:

  1. Есть ли лучший способ передать URL-адрес в качестве пути к моему компоненту?
  2. Если нет,как заставить swagger передать URL как pathparam?(приведенный выше код работает, но не с чванством)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...