java - Spring REST获取多个映射端点的url路径
问题描述
我有多个路径的 REST 端点,如下所示:
@RequestMapping(method = RequestMethod.POST, path = {"/xxx/yyy", "/zzz"})
@ResponseBody
public Mono<EpcPain> paymentOrder(@RequestHeader(name = "Timeout", defaultValue = "10000") int timeout,
@RequestHeader(name = "X-Request-Id", required = false) String xRequestId) {
...
}
如果请求路径是 xxx/yyy 或 zzz,我该如何解决?我不想复制这个端点,也不想传递一些参数。我正在寻找一些弹簧代码魔术。
解决方案
org.springframework.web.context.request.RequestContextHolder
可用于获取路径
import static org.springframework.web.servlet.HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE;
import static org.springframework.web.servlet.HandlerMapping.LOOKUP_PATH;
import static org.springframework.web.servlet.HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE;
和
@RequestMapping(value = {"/getDetails","/getDetailsMore"}, method = RequestMethod.GET)
public String getCustomerDetails(TestFormBean bean) {
RequestAttributes reqAttributes = RequestContextHolder.currentRequestAttributes();
System.out.println(reqAttributes.getAttribute(BEST_MATCHING_PATTERN_ATTRIBUTE, 0));
System.out.println(reqAttributes.getAttribute(LOOKUP_PATH, 0));
System.out.println(reqAttributes.getAttribute(PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, 0));
return "test";
}}
这三个都打印路径。
希望这可以帮助。
推荐阅读
- macos - 没有使用 rowViewForRow 创建的行对象
- mysql - json_table 语法和结构
- spring-boot - 无法在 Spring 应用程序中登录 H2 控制台
- java - 我有一个登录和索引页面。我想从索引重定向到登录但找不到 404
- javascript - 从一个元素到另一个元素画一条线
- javascript - React Native:如何浏览有很多孩子的数组
- node.js - 为什么 mocha 不显示通过的测试?像开玩笑一样。它只是说通过了 5 次测试而不是更多细节
- xcode - 无法使用 MediaLibrary 框架读取外部照片库
- html - 如果使用 target="_blank" 将用户重定向到我的网站主页到另一个页面(同一网站),是否必须使用 rel="noreferrer"?
- sql - 在创建 SSIS 目录时;我在代码 PAGE 上失败了