谷歌云函数总是从 API 网关接收/来自

问题描述

让我们设置基础: 我将 Google Api Gateway 与不同的后端(如 Google Cloud Function)一起使用。

首先,我在包含原始请求 url 的标头上使用 req 语句解析 switch 参数。 (非常混乱但有效)

所以我决定使用 express 应用来代替我的云功能

但问题是:当我的路径是 https://mygateway/api 时,我的函数总是从网关接收 /生成CANNOT GET / 这样的严重错误/subservice/action

所以我的问题是:我可以更改 express 应用程序的处理方式以解析包含原始请求 url 而不是认路径 url 的标头吗?

这是我的配置的一部分:

{
  "swagger": "2.0","info": {
    "title": "my API","version": "1.0.0"
  },"basePath": "/api","host": "mygateway.[REGION].gateway.dev","schemes": [
    "https"
  ],"paths": {
    "/subservice/action": {
      "get": {
        "x-google-backend": {
          "address": "https://[REGION]-[ProjectID].cloudfunctions.net/[mycloudfunction]"
        },"security": [
          {
            "jwt_security": []
          }
        ],

解决方法

我在这个问题上发现了类似的东西,引导我搜索响应 possible duplicate here

根据Google's explanation of path translation,当我们使用x-google-backend时,后端只会接收基本请求。我们必须使用参数 path_translation 定义我们期望的行为。就我而言,我想收到相同的路径,所以我使用 APPEND_PATH_TO_ADDRESS