Мне нужно принять 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
.Возможно, я неправильно его использую.
Вопросы:
- Есть ли лучший способ передать URL-адрес в качестве пути к моему компоненту?
- Если нет,как заставить swagger передать URL как pathparam?(приведенный выше код работает, но не с чванством)