使用路径变量在单个端点上拥有单个端点是否有优势?

时间:2018-05-31 13:35:07

标签: java performance rest spring-boot endpoint

例如,如果我有多种类型的电子设备请求大型文件,那么每种设备类型具有单独的端点(或控制器)是否有任何优势(除了可读性和整洁性),如下所示:

@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 :(得分:2)

TL; DR:别担心。

接受和解析新HTTP请求的开销 way 高于从URI中提取一个路径变量的开销。

Spring MVC调度例程经过大量优化;我希望解析路径变量的开销大约为纳秒级。

当然它还取决于你对控制器内部type参数的处理方式。如果你只是在switch语句中使用它,那么它应该很快,如果你做更多的查找/日志记录/不区分大小写的匹配/等。然后开销会更高。