我正在尝试创建一个动态Rest服务,接受一个或多个动态PathVariable。如果未指定默认值,如何设置默认PathVariable?
@GetMapping(value={"/dynamic","/dynamic/{cognome}","/dynamic/{cognome}/{nome}"})
public String salutoDinamico(
@PathVariable(value="nome")@Value("Bar") String nome,
@PathVariable(value="cognome")@Value("Foo") String cognome
) {
return "Ciao Mondo da "+cognome+" "+" "+nome;
}
答案 0 :(得分:0)
您将必须指定完全没有变量的单独的@GetMappings
答案 1 :(得分:0)
您可以像这样手动进行操作:
DateTime now = DateTime.UtcNow;
Stopwatch sw = Stopwatch.StartNew();
foreach (var person in myData)
{
person.CreatedBy = "abc";
person.CreatedOn = now.Add(sw.Elapsed).ToString("o");
}
答案 2 :(得分:0)
PathVariable
批注具有名为required
的属性。
将该属性设置为false以获取可选值。
另外,Apache StringUtils
类具有用于默认设置的有用功能。
尝试一下:
@GetMapping("/dynamic/{cognome}/{nome}"})
public String salutoDinamico(
@PathVariable(value="nome", required=false)@Value("Bar") String nome,
@PathVariable(value="cognome", required=false)@Value("Foo") String cognome )
{
final String nomeValue = StringUtils.defaultIfBlank(nome, "defaultNome");
final String cognomeValue = StringUtils.defaultIfBlank(cognome, "defaultCognome";
return "Ciao Mondo da " + cognome + " " + nome;
}
答案 3 :(得分:0)
您不能具有可选的路径变量,但是可以有两个调用相同服务代码的控制器方法:
@GetMapping(value={"/dynamic","/dynamic/{cognome}","/dynamic/{cognome}/{nome}"})
public String salutoDinamico(
@PathVariable(value="nome")@Value("Bar") String nome,
@PathVariable(value="cognome")@Value("Foo") String cognome) {
return "Your Return Here;
}
解决方法如下
@GetMapping(value={"/dynamic","/dynamic/{cognome}","/dynamic/{cognome}/{nome}"})
public String salutoDinamico() {
return "Your Null Return Here;
}
如果您有两个以上的可选路径元素,则应认真考虑切换其中一些以请求参数。