Swagger/OpenAPI 如何从 @GetMapping("/**") 测试动态路径
Swagger/OpenAPI how to test dynamic paths from @GetMapping("/**")
我正在创建一个 API 来获取文件信息,它可以处理动态路径上的路径:
@GetMapping("/api/file/info/**")
检索这个动态部分是用这个方法完成的
public String getDynamicPartFromRequest(HttpServletRequest request) {
return (new AntPathMatcher()).extractPathWithinPattern(
(String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE),
(String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE));
}
这允许检索这些示例路径:
- /api/file/info/image.jpg --> image.jpg
- /api/file/info/sub1/sub2/sub3/image.jpg --> sub1/sub2/sub3/image.jpg
所以从代码的角度来看,完全符合预期!
问题是如何test/use this in Swagger UI 因为“**”部分不能填写,总是请求到
Request URL
https://localhost/api/file/info/**
有没有办法告诉 Swagger/OpenAPI 为 URL 的“**”部分提供输入字段?
这目前是不可能的,因为 OpenAPI 规范不支持路径参数中的非编码斜杠。更多信息在这里:
https://github.com/OAI/OpenAPI-Specification/issues/892
我正在创建一个 API 来获取文件信息,它可以处理动态路径上的路径:
@GetMapping("/api/file/info/**")
检索这个动态部分是用这个方法完成的
public String getDynamicPartFromRequest(HttpServletRequest request) {
return (new AntPathMatcher()).extractPathWithinPattern(
(String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE),
(String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE));
}
这允许检索这些示例路径:
- /api/file/info/image.jpg --> image.jpg
- /api/file/info/sub1/sub2/sub3/image.jpg --> sub1/sub2/sub3/image.jpg
所以从代码的角度来看,完全符合预期!
问题是如何test/use this in Swagger UI 因为“**”部分不能填写,总是请求到
Request URL
https://localhost/api/file/info/**
有没有办法告诉 Swagger/OpenAPI 为 URL 的“**”部分提供输入字段?
这目前是不可能的,因为 OpenAPI 规范不支持路径参数中的非编码斜杠。更多信息在这里:
https://github.com/OAI/OpenAPI-Specification/issues/892