[英]How to set default PathValue in a Spring REST service
我正在尝试创建一个动态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;
}
您将必须指定单独的@GetMappings
,它们根本没有变量
您可以像这样手动进行操作:
@GetMapping(value={"/dynamic","/dynamic/{cognome}","/dynamic/{cognome}/{nome}"})
public String salutoDinamico(
@PathVariable(value="nome", required=false)String nome,
@PathVariable(value="cognome", required=false)String cognome
) {
if(nom == null){
nom = "default value - nome";
}
if(cognome == null){
cognome= "default value - cognome";
}
return "Ciao Mondo da "+cognome+" "+" "+nome;
}
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;
}
您不能具有可选的路径变量,但是可以有两个调用相同服务代码的控制器方法:
@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;
}
如果您有两个以上的可选路径元素,则应认真考虑切换其中一些以请求参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.