Google Cloud Endpoints - 方法不存在 - OpenAPI yaml规范

时间:2017-03-29 15:09:51

标签: node.js google-app-engine swagger google-cloud-endpoints openapi

我尝试使用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-IDYOUR-CONFIG-ID

我使用gcloud app deploy将应用部署到Google App Engine。我可以通过Google App Engine控制台看到该应用正常运行。

然而,/上的GET方法未被识别为有效端点,我得到如上所述的响应。

我错过了什么吗?我搜索了很多关于这个问题,但没有发现任何有用/类似的东西!

P.S:通过添加,我的意思是,这是我已添加到相应GitHub cloned files

的代码


修改 我将API端点从/更改为/hello,它运行正常!!无法理解为什么/上的相同功能无法在Google Cloud Endpoints上运行(尽管可以在本地使用!)

1 个答案:

答案 0 :(得分:2)

Google Cloud Endpoints目前不支持" /"的根路径。这是正在研究的问题。