簡體   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