node.js - 如何让 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}`)
我曾尝试手动设置代理,但现在我想知道这是否完全是错误的方法。
有什么建议么?
注意:如果这个问题需要进一步解释,请告诉我
解决方案
我认为不可能实现与在本地环境中开发完全一样的东西,但您始终可以根据需要配置路由规则和 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..
}
在这篇文章中也有关于这个话题的讨论。
推荐阅读
- .net-core - HttpClient.PutAsync 返回 400 Bad Request (.Net Core / Blazor)
- python - Python 组列表到子列表的列表是单调的,元素之间的差异相等
- python - 从 Arduino 绘制实时串行数据,除非手动关闭,否则绘图不会更新?
- python - numpy数组的唯一标识符?
- php - 如何在管道到 PHP 进程后保持输入流打开?
- mongodb - 用于 Mongodb 慢查询的 Logstash Grok 过滤器
- mysql - 如果 id 在另一个表中,Mysql 用值更新列
- reactjs - tsdx 和 babel 无法使用意外令牌构建典型的 TypeScript
- android - 如何在离子+反应+电容器项目中设置最低android版本支持?
- vba - 在我的所有 Outlook 邮件中查找并以斜体形式输入单词列表(在 a.txt 文件中列出)