繁体   English   中英

如何在Spring REST服务中设置默认PathValue

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM