Есть ли преимущество в том, что отдельные конечные точки имеют одну конечную точку с переменной пути? - PullRequest
0 голосов
/ 31 мая 2018

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

@RequestMapping(value = "/device/tablet", method = GET)
    public List<Object> getTabletFile(@RequestBody Object body){
 // code here
}

@RequestMapping(value = "/device/laptop", method = GET)
    public List<Object> getLaptopFile(@RequestBody Object body){
 // code here
}

В противоположность этому:

@RequestMapping(value = "/device/{type}", method = GET)
public List<Object> getFiles(@PathVariable("type") String type, @RequestBody Object body){
 // code here
}

Мне интересно с точки зрения производительности, ожидается ли высокая нагрузка на систему?

1 Ответ

0 голосов
/ 31 мая 2018

TL; DR: не беспокойтесь об этом.

Издержки, связанные с принятием и анализом нового HTTP-запроса, в порядке выше, чем из-за извлечения одной переменной пути из URI..

Процедуры отправки Spring MVC сильно оптимизированы;Я ожидал бы, что издержки при разборе переменной пути будут порядка наносекунд.

Конечно, это также зависит от того, что вы делаете с аргументом type внутри контроллера.Если вы просто используете его в операторе switch, то оно должно быть быстрым, и если вы сделаете еще несколько поисков / логирование / сопоставление без учета регистра / etc.тогда накладные расходы будут выше.

...