首页 > 解决方案 > app.yaml 中的用户 error_handlers 以返回 HTTP 响应

问题描述

要引用GCP的文档,您可以error_handlers在您app.yaml的配置中使用为不同错误类型返回的自定义错误页面。从文档中只提到.html正在使用的文件。

有没有办法发送 HTTP 响应而不是 HTML 页面?

例如,可以在 nginx 中通过以下方式实现所需的结果:

server {
 error_page                            502 @bad_gateway;
 location @bad_gateway {
  return                               502 '{\n\t"success": false,\n\t"code": -1,\n\t"message": "Server is down",\n\t"status_code": 502,\n\t"status_message": "Bad Gateway",\n\t"detailed": ["Server is down"]\n}';
  add_header                           Content-Type "application/json charset=UTF-8" always;
  internal;
 }
}

标签: google-app-engine

解决方案


当 Google App Engine 收到对您的应用程序的 Web 请求时,它会使用与 app.yaml 配置文件中的 URL 对应的处理程序脚本。以下是有关如何在 Google App Engine 标准环境中处理请求的所有相关信息。我会将这个逻辑放在脚本文件中并从那里发送 HTTP 响应,因为 error_handlers 字段专门用于配置自定义错误页面。检查此链接作为您的 app.yaml 文件的参考。

存在 error_handlers 部分的目的是为 App Engine 的以下特定错误代码提供静态文件:over_quota、dos_api_denial 和 timeout。您可以在文档中查看该信息。例如,您可以提供一个 error.json 文件,其中包含 Nginx 示例中提供的所有结构,而不是 error.html 文件


推荐阅读