首页 > 解决方案 > 如何让 App Engine 前端服务使用来自不同 App Engine 服务的 API

问题描述

我有两个 App Engine 服务,一个用于我的 React 前端,另一个用于我的 Express 后端。并不是说虽然这两个东西是同一个应用程序的一部分,但它们是不同的服务,因此具有不同的 URL,可以通过这些 URL 访问它们。

我的 React 应用程序中的所有请求都设置为使用后端端点的完整 url,例如:

Axios.get(`https://backend.appspot.com/api/v1/users/get/${userId}`)

但是,这意味着我无法在本地开发后端,因为 React 应用程序始终指向 App Engine 服务。

我想要完成的是,如果您的后端和前端在同一台服务器上,并且您只需使用 React 代理设置,您就会拥有类似的东西,允许您像这样向您的端点发出请求:

Axios.get(`/api/v1/users/get/${userId}`)

我曾尝试手动设置代理,但现在我想知道这是否完全是错误的方法。

有什么建议么?

注意:如果这个问题需要进一步解释,请告诉我

标签: node.jsreactjsgoogle-app-engineproxy

解决方案


我认为不可能实现与在本地环境中开发完全一样的东西,但您始终可以根据需要配置路由规则和 URL。

为了创建您自己的路由规则,您可以使用dispatch.yaml 文件在其中定义它们。这样您就可以准确地选择您的请求将如何被路由

至于您对开发过程的关注,您需要在代码中进行一些配置。基本上,您需要使您的应用程序足够聪明,以知道它在哪里运行:在本地或应用程序引擎上。

为此,我建议您在app.yaml中定义一个像这样的环境变量:

env_variables:
IS_APPENGINE: 'true'

然后在您的应用程序中,您可以检查它的运行位置并设置您的 URL 路径:

if(Platform.environment['IS_APPENGINE'] == 'true') {
URL1 = .....
URL2 = .....}  else{
URL1 = localhost/page1..
URL2 = localhost/page2..
}

在这篇文章中也有关于这个话题的讨论。


推荐阅读