在 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"