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

时间:2019-01-14 15:12:01

标签: java spring rest

我正在尝试创建一个动态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;
   }

4 个答案:

答案 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;
           }        

如果您有两个以上的可选路径元素,则应认真考虑切换其中一些以请求参数。