Является ли конкретный @RequestMapping всегда вызываемым в пользу переменной @RequestMapping в Spring - PullRequest
0 голосов
/ 12 июня 2018

Давайте предположим следующий контроллер:

@RestController
public class MyController {

  @RequestMapping(method = GET, path = "/info")
  public InfoModel getInfo(){ 
    ... 
  }

  @RequestMapping(method = GET, path = "/{resourceId}")
  public ResourceModel getResource(@PathVariable("resourceId") String resourceId){
    ...
  }
}

Вопрос в том, какой метод будет вызываться при керлинге GET /info.

Во всех моих тестах getInfo был вызван, который, кажется,быть ясным.

Но я не уверен на 100%, является ли это просто счастливой расой или если указано, что статический путь имеет более высокий приоритет, чем переменный путь.

Даже после некоторых исследованийЯ не смог найти спецификацию для этого случая, только некоторые довольно старые (и, вероятно, устаревшие) сообщения в блоге.

Я использую SpringBoot 2.0.2.

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Если у вас есть путь, указанный на уровне класса (@RequestMapping ("/ home"), как указано ниже

@RestController
@RequestMapping("/home")
public class MyController {

      @RequestMapping(method = GET, path = "/info")
      public InfoModel getInfo(){ 
        ... 
      }
}

, то вам придется свернуть GET / home / info. Все пути URL определены/ решено вами.

0 голосов
/ 12 июня 2018

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

Пожалуйста, обратитесь к документации Spring MVC, которая объясняет все подробно Запрос сопоставления в Pattern Comparison.

...