排查响应错误

如果向您的 Cloud Endpoints Frameworks API 发出的请求没有收到成功响应,您可以使用 Google Cloud 控制台中的 Cloud Logging 来排查问题。

查看日志

  1. 在 Google Cloud 控制台中,转到 Logging > Logs Explorer 页面。

    转到“日志浏览器”页面

  2. 从页面顶部的项目下拉列表中,选择您创建 API 时所在的 Google Cloud 项目。

  3. 选择 GAE 应用所有日志

  4. 调整时间范围,直到出现显示错误的行。

  5. 点击全部展开以查看与错误相关的完整日志。

以下部分提供特定错误消息的问题排查信息。如果您无法解决问题,请复制其中一个显示相关错误的日志条目,并将其粘贴到文本文件中。将该日志随附在您与 Google 进行的任何通信中。

503 Service Unavailable

App Engine 可能需要几分钟时间才能成功响应请求。如果您在发送请求后收到 503 错误,请等待几分钟,然后再次尝试发送请求。如果您仍未成功收到响应,请检查 Cloud Logging 日志。以下是您可能会在 Cloud Logging 日志中看到的一些错误消息。

错误消息 问题排查
找不到 YOUR_PROJECT_ID.appspot.com 服务或权限被拒绝。如果这是新的 Endpoints 服务,请确保已使用 gcloud 部署服务配置。 如果 Python 版 Endpoints Frameworks 无法加载您在 app.yaml 文件中所指定服务的服务配置,则会记录此错误。如果您尚未使用 gcloud endpoints services deploy 为您的 API 部署 OpenAPI 文档,或尚未启用 Service Management API,则可能会发生此错误。为您的 API 部署 OpenAPI 文档时,gcloud 命令会自动启用以下各项:
  • Service Management API (servicemanagement.googleapis.com)
  • 端点 (endpoints.googleapis.com)
  • Cloud API (cloudapis.googleapis.com)
如果您已停用以上任一服务,则必须将其重新启用。如需了解详情,请参阅启用和停用 API
找到了服务 YOUR_PROJECT_ID.appspot.com,但找不到版本 SERVICE_CONFIG_ID 的服务配置。 如果 Python 版 Endpoints Frameworks 无法找到您在 app.yaml 文件中为 ENDPOINTS_SERVICE_VERSION 指定的服务配置 ID,则会记录此错误。要修复此错误,请执行以下操作:
  1. 获取服务配置 ID
  2. 修改 app.yaml 文件并将 ENDPOINTS_SERVICE_VERSION 设置为服务配置 ID。
  3. 重新部署您的应用:
    
    gcloud app deploy

404 Not Found

如果您最近已迁移到 Endpoints Frameworks 版本 2,但收到 404 Not Found 错误消息,请参阅以下部分来排查相关问题:

Invoke-WebRequest 示例的问题

在某些版本的 Windows PowerShell 中,教程中的示例 Invoke-WebRequest 会失败。我们还收到了一份报告,显示响应包含无符号字节列表,这些无符号字节必须转换为字符。如果示例 Invoke-WebRequest 未返回预期的结果,请尝试使用其他应用发送请求。下面是一些建议:

  • 启动 Cloud Shell,并按照教程中指导您发送请求的 Linux 步骤操作。
  • 使用 Chrome 浏览器扩展程序 Postman(由 www.getpostman.com 提供)等第三方应用。在 Postman 中创建请求时,请确保以下几点:

    • 选择 POST 作为 HTTP 谓词。
    • 对于标头,请选择键 content-type 和值 application/json
    • 对于正文,请输入:{"message":"hello world"}
    • 输入示例应用的网址。例如:

      https://example-project-12345.appspot.com/_ah/api/echo/v1/echo
      
  • 下载并安装要在命令提示符中运行的 curl。由于 Windows 不处理单引号内嵌套的双引号,因此您必须更改示例中的 --data 选项,如下所示:--data "{\"message\":\"hello world\"}"

后续步骤