Restful API,良好实践

时间:2016-08-05 07:37:19

标签: java spring rest

这个问题更多的是关于设计而不是技术问题。 我正在使用javaSpring Rest Services开发后端应用程序。 这是一个小应用程序,所以在开始时我只是为所有端点(5或6个端点)创建了一个控制器。例如,我有一个端点,用于请求令牌,/token,另一个端口根据先前收到的令牌({1}}发出请求。

所以现在我想知道是否应该将控制器分成两个或更多个控制器,每个控制器的端点彼此相关。

当然,就代码的易读性而言,这很有用,但从技术角度来看,如果spring bean的默认范围是/readresource,如果我只有一个控制器,那么只为整个应用程序创建一个实例,所以让我们假设我们有两个请求同时到达服务器,即使每个请求都运行一个完全独立的线程,并且它们正在请求不同的端点,最后他们正在访问同一个实例,所以,一个请求应该等待另一个请求完成,我们不能同时在同一个实例上执行两个不同的线程,我是对的吗?

所以......在性能或良好实践方面,最好避免使用具有许多端点的大型控制器来代替许多小型控制器吗?

你怎么看?

谢谢!

2 个答案:

答案 0 :(得分:2)

  

我们不能同时在同一个实例上执行两个不同的线程,对不对?

错误。仅当被调用的方法具有synchronized访问修饰符时才会出现这种情况。否则,并发调用可能发生在不同线程中的同一实例上。

拥有多个控制器对应用程序的性能没有明显影响。这意味着额外的bean被加载到内存中,这相当于占用了几个额外的KB。

通过使代码可以轻松阅读和理解,远远超过了这个成本。请记住,您不应该为自己编写代码。你应该把它写给下一个人,或者作为一个比我自己聪明的人曾经说过......

  

写下你的代码,好像下一个阅读它的人是一个愤怒的精神病患者,他知道你住在哪里。

答案 1 :(得分:0)

对于@christopher正确提到的内容,有多个控制器或者没有多个控制器,更多的是关注分离而不是性能。

这更像是一个设计决策。假设您正在为电子商务网站构建后端,那么为产品,客户和付款设置单独的控制器可能更有意义。如果您设计的后端是针对一个只读的新闻网站,那么只有一个控制器会更好。