Как установить PathValue по умолчанию в сервисе Spring REST - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь создать службу динамического отдыха, принимая один или несколько динамических 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 голосов
/ 14 января 2019

У вас не может быть необязательных переменных пути, но у вас может быть два метода контроллера, которые вызывают один и тот же сервисный код:

 @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;
           }        

Если у вас более одного или максимум двух необязательных элементов пути, вам следует серьезно подумать о переключении нескольких из них для запроса параметров.

0 голосов
/ 14 января 2019

вы можете сделать это вручную, как:

 @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;
   }
0 голосов
/ 14 января 2019

Аннотация 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;
}
0 голосов
/ 14 января 2019

Вам нужно будет указать отдельный @GetMappings, который вообще не имеет переменных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...