首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google Cloud Run的通配符路径代理

Google Cloud Run的通配符路径代理
EN

Stack Overflow用户
提问于 2019-12-29 18:00:50
回答 2查看 517关注 0票数 1

我有两个云运行服务(Next.js和API server),我想通过一个端点为它们提供服务。我希望到/api的请求被转发到API服务,所有其他请求(/*)被转发到Next.js服务器。Cloud Run documentation建议我使用端点,但它似乎不支持通配符路径。可能的替代方案是什么?

EN

Stack Overflow用户

发布于 2021-11-28 20:11:58

Google API Gateway支持不同的通配符,我使用Google函数作为后端,但当使用GW和Google Run时,这不应该有什么不同。

我的场景是:

  • /应路由至/index.html
  • /assets应路由至/assets/any-file-here.png
  • /logo-256.png应路由至/logo-256.png
  • /endpoint-1应仅路由至API,但托管在另一function
  • /endpoint-2/some-param上的应仅路由至托管在与assets

相同功能上的API。

有了这种配置,get的所有路由都像想要的那样,使用Double Wildcard Matching

通配符在特定路由之前并不重要,这是由网关正确处理的。

代码语言:javascript
运行
复制
{
    "swagger": "2.0",
    "info": {
        "version": "0.0.1",
        "title": "Some API w/ Assets"
    },
    "paths": {
        "/": {
            "get": {
                "summary": "home",
                "operationId": "home",
                "parameters": [],
                "x-google-backend": {
                    "address": "https://THE-GOOGLE-RUN-OR-FUNCTION",
                    "path_translation": "CONSTANT_ADDRESS"
                },
                "responses": {
                    "200": {
                        "description": "Home"
                    }
                }
            }
        },
        "/{files=**}": {
            "get": {
                "summary": "assets",
                "operationId": "assets",
                "parameters": [
                    {
                        "in": "path",
                        "name": "files",
                        "type": "string",
                        "required": true
                    }
                ],
                "x-google-backend": {
                    "address": "https://THE-GOOGLE-RUN-OR-FUNCTION",
                    "path_translation": "APPEND_PATH_TO_ADDRESS"
                },
                "responses": {
                    "200": {
                        "description": "assets"
                    }
                }
            }
        },
        "/endpoint-1": {
            "get": {
                "summary": "Some pure backend api",
                "operationId": "ep1",
                "x-google-backend": {
                    "address": "https://SOME-OTHER-GOOGLE-RUN-OR-FUNCTION",
                    "path_translation": "APPEND_PATH_TO_ADDRESS"
                },
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "result values"
                    }
                }
            }
        },
        "/endpoint-2/{some_param}": {
            "get": {
                "summary": "Some pure backend API with path param",
                "operationId": "ep2",
                "parameters": [
                    {
                        "in": "path",
                        "name": "some_param",
                        "type": "string",
                        "required": true
                    }
                ],
                "x-google-backend": {
                    "address": "https://THE-GOOGLE-RUN-OR-FUNCTION",
                    "path_translation": "APPEND_PATH_TO_ADDRESS"
                },
                "responses": {
                    "200": {
                        "description": "result values"
                    }
                }
            }
        }
    }
}

但是使用这种设置,你的页面不会那么快,我建议你在提供文件时,在你的API网关之前添加带有Google CDN的Google Load Balancer。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59518397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档