Java 与具有路径变量的单个端点相比,具有单个端点是否有优势?

Java 与具有路径变量的单个端点相比,具有单个端点是否有优势?,java,performance,rest,spring-boot,endpoint,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

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

@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/tablet”,method=GET)
公共列表getTabletFile(@RequestBody对象体){
//代码在这里
}
@RequestMapping(value=“/device/laptop”,method=GET)
公共列表getLaptopFile(@RequestBody对象体){
//代码在这里
}
与此相反:

@RequestMapping(value = "/device/{type}", method = GET)
public List<Object> getFiles(@PathVariable("type") String type, @RequestBody Object body){
 // code here
}
@RequestMapping(value=“/device/{type}”,method=GET)
公共列表getFiles(@PathVariable(“type”)字符串类型,@RequestBody对象体){
//代码在这里
}

我想知道在性能方面,是否预期系统上会有高负载

TL;医生:别担心

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

Spring MVC调度例程经过了大量优化;我预计解析路径变量的开销大约为纳秒


当然,这也取决于您如何处理控制器中的
类型
参数。如果您只是在
switch
语句中使用它,那么它应该很快,如果您进行更多的查找/记录/不区分大小写的匹配等,那么开销会更高。

在您的情况下,第一个选项没有多大意义,因为如果您想添加另一个类型,您必须创建另一个端点等等。至于性能,应该没有太大区别,它将被用作服务器上文件路径的一部分,即子文件夹名称。对,因此更谨慎地关注这些文件的缓存,因为URL解析的开销与文件I/O相比是微不足道的。是的,绝对!这是下一个阶段:-)