问题描述
让我们设置基础: 我将 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