我尝试使用Google Cloud Endpoints和Google App Engine设置NodeJS REST API。我已经从GitHub克隆了官方示例项目,并使用Quickstart设置了Google Cloud Endpoints。开箱即用,它工作正常,但我尝试在/
为GET请求添加另一个API端点,但我在部署并发出请求后得到的响应如下:
{
"code": 5,
"message": "Method does not exist.",
"details": [
{
"@type": "type.googleapis.com/google.rpc.DebugInfo",
"stackEntries": [],
"detail": "service_control"
}
]
}
预配置的API工作正常,但只有我添加的新功能无效。
我已经在我的NodeJS应用中正确配置了新端点(它在本地工作正常)。我添加的相应代码是:
app.get('/', function (req, res) {
res.status(200).json({ message: 'Hello, world!' });
});
我已将添加以下内容添加到我的openapi.yaml
文件中:
paths:
"/":
get:
description: "Returns the message \"Hello, World\""
operationId: "root"
produces:
- "application/json"
responses:
200:
description: "Hello"
schema:
$ref: "#/definitions/helloMessage"
definitions:
helloMessage:
properties:
message:
type: "string"
从终端运行gcloud service-management deploy openapi.yaml
以部署和配置Google Cloud Endpoints后,我以指定的格式获取了我在app.yaml
中替换的服务名称和服务配置ID通过QuickStart
endpoints_api_service:
name: echo-api.endpoints.[YOUR-PROJECT-ID].cloud.goog
config_id: YOUR-CONFIG-ID
(这是格式,我已用正确的格式替换YOUR-PROJECT-ID
和YOUR-CONFIG-ID
)
我使用gcloud app deploy
将应用部署到Google App Engine。我可以通过Google App Engine控制台看到该应用正常运行。
然而,/
上的GET方法未被识别为有效端点,我得到如上所述的响应。
我错过了什么吗?我搜索了很多关于这个问题,但没有发现任何有用/类似的东西!
P.S:通过添加,我的意思是,这是我已添加到相应GitHub cloned files
的代码
修改
我将API端点从/
更改为/hello
,它运行正常!!无法理解为什么/
上的相同功能无法在Google Cloud Endpoints上运行(尽管可以在本地使用!)
答案 0 :(得分:2)
Google Cloud Endpoints目前不支持" /"的根路径。这是正在研究的问题。