【问题标题】:Is there an advantage to having individual endpoints over a single endpoint with a path variable?具有单个端点而不是具有路径变量的单个端点是否有优势?
【发布时间】:2018-05-31 13:35:06
【问题描述】:

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

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

我想知道在性能方面,是否预计系统负载会很高?

【问题讨论】:

  • 在您的情况下,第一个选项并没有多大意义,因为如果您想添加另一种类型,则必须创建另一个端点等等。至于性能,应该差别不大

标签: java performance rest spring-boot endpoint


【解决方案1】:

TL;DR:别担心。

接受和解析一个新的 HTTP 请求的开销比从 URI 中提取一个路径变量的开销要高方式

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

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

【讨论】:

  • 它将被用作服务器上文件路径的一部分,一个子文件夹名称。
  • 对,因此谨慎的做法是更多地关注这些文件的缓存,因为与文件 I/O 相比,URL 解析的开销微不足道。
  • 是的,绝对!这是下一阶段:-)
猜你喜欢
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 2017-03-17
  • 2012-03-22
  • 1970-01-01
  • 2021-04-19
  • 2016-09-13
  • 1970-01-01
相关资源
最近更新 更多