REST API和Web客户端的服务器配置

3
我使用go(golang)开发了一个REST API,现在我想设计我的Web前端。我不知道如何将前端与后端分离。
我认为有三种选择:
1- 在一个服务器上运行REST API和前端网站在另一个服务器上运行。
2- 在同一台服务器上运行REST API和前端网站,但在不同的端口上。例如,在端口8080上运行REST,在端口80上运行前端网站。
3- 在同一台服务器上以相同的端口运行两者,但是对于每个URL路径(或子域名)使用不同的路径。
由于我不熟悉这些内容,请告诉我哪种方法是最佳解决方案。还有其他解决方案吗?我的网站有多大是否重要?

你不能做第三件事,但你可以做第一件和/或第二件事,但这将取决于许多特定于你的应用程序的因素。 - mugabits
@jmugz3,你实际上可以做到3个,但你必须使用NGINX来前置你的服务器。另一种方法是通过使用相同的Go服务器进行前置,并根据请求头进行子路由处理。 - Gurbakhshish Singh
@GurbakhshishSingh 我可以用一个NGINX运行2个Go服务器吗?第二种方式有什么缺点? - Amir Hossein Mafi
@amir,你可以在不同的本地主机端口上本地运行2个go服务器,并使用NGINX基于子域名进行端口转发到不同的本地主机端口。即使你只运行单个go服务器,也不应该在80端口上运行它,因为它需要root访问权限,这是你不应该做的,所以你应该始终在非标准端口上运行它们并使用NGINX进行端口转发。 - Gurbakhshish Singh
1个回答

2

第一种和第二种选项在设置和开发方面大体相同。从这个角度来看,您不会失去或获得任何东西,唯一的决定因素是您的资源以及您希望将来如何使用后端。

如果目前只有一个应用程序/前端调用API,则它们在同一服务器上将是更好的选择,因为与第二个选项相比,性能略有提高。

但是,由于您选择了RESTful设计作为后端,您可能希望在将来重用它用于更多应用程序,并且如果您预计对API的调用增加将开始使用服务器资源,则您的前端可能会受到影响,那么您应该考虑将后端移至另一个服务器。

整个微服务、RESTful后端设计“模式”是为了解耦前后端,以便更好地扩展,但这可能并不适用于每个人,您必须估计应用程序实际上将有多少使用量并思考是否实际上可以在其他地方重用API(或者是否要为他人提供API)。

最后,如果第一种和第二种选择在目前对您的投资金额相似,请选择第一种;否则,只需将前端和后端保持在同一服务器上,如果未来需要扩展,可以将API重新定位到不同的服务器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接