在 RequestMapping 值中使用字符串变量
Using a String variable in RequestMapping value
我有以下内容:
@Value("${apiVersion")
private String apiVersion;
@RequestMapping(value = "/{apiVersion}/service/call", method = RequestMethod.POST)
我预计 URL 是:
/apiVersion/service/call
但事实证明 {foo}
接受任何值,它实际上并不使用字符串。
有没有办法让我使用字符串值作为 URL 的一部分?
编辑
问题是我有多个调用我们那个值。
@RequestMapping(value = apiVersion + "/call1", method = RequestMethod.POST)
@RequestMapping(value = apiVersion + "/call2", method = RequestMethod.POST)
@RequestMapping(value = apiVersion + "/call3", method = RequestMethod.POST)
etc.
从技术上讲,我可以像您建议的那样为每个常量声明常量,但这听起来不是最佳选择。没有办法也行,就是想知道有没有
解决方案
正在将通用映射添加到控制器。
@RequestMapping("${apiVersion}")
如果你只想在 Java 中预定义路径,只需执行
@RequestMapping(value = foo + "/service/call", method = RequestMethod.POST)
Spring Mvc 中的路径变量是端点的占位符,如下所示
@GetMapping(value = "/books/{id}")
public String displayBook(@PathVariable id) { ... }
如果要将它应用于控制器中的所有方法,请在控制器 class 级别上声明它:
@RestController
@RequestMapping("/test")
public class MyController { ...
并且您不需要在方法路径之前添加它。
否则它应该是常量,例如:
private static final String FOO = "test";
并将其添加到方法路径之前,例如:
FOO + "/service/call"
我有以下内容:
@Value("${apiVersion")
private String apiVersion;
@RequestMapping(value = "/{apiVersion}/service/call", method = RequestMethod.POST)
我预计 URL 是:
/apiVersion/service/call
但事实证明 {foo}
接受任何值,它实际上并不使用字符串。
有没有办法让我使用字符串值作为 URL 的一部分?
编辑
问题是我有多个调用我们那个值。
@RequestMapping(value = apiVersion + "/call1", method = RequestMethod.POST)
@RequestMapping(value = apiVersion + "/call2", method = RequestMethod.POST)
@RequestMapping(value = apiVersion + "/call3", method = RequestMethod.POST)
etc.
从技术上讲,我可以像您建议的那样为每个常量声明常量,但这听起来不是最佳选择。没有办法也行,就是想知道有没有
解决方案
正在将通用映射添加到控制器。
@RequestMapping("${apiVersion}")
如果你只想在 Java 中预定义路径,只需执行
@RequestMapping(value = foo + "/service/call", method = RequestMethod.POST)
Spring Mvc 中的路径变量是端点的占位符,如下所示
@GetMapping(value = "/books/{id}")
public String displayBook(@PathVariable id) { ... }
如果要将它应用于控制器中的所有方法,请在控制器 class 级别上声明它:
@RestController
@RequestMapping("/test")
public class MyController { ...
并且您不需要在方法路径之前添加它。
否则它应该是常量,例如:
private static final String FOO = "test";
并将其添加到方法路径之前,例如:
FOO + "/service/call"