【问题标题】:Configure app yaml to serve JSON files out of static directories配置应用程序 yaml 以从静态目录中提供 JSON 文件
【发布时间】:2012-09-08 11:45:31
【问题描述】:

我这样配置了我的 app.yaml:

- url: /data
  static_dir: templates/data
  http_headers:
    Content-Type: application/json

GAE config yaml 看到这里

我执行 AJAX 请求来获取 JSON; 我有一个 1KB 的“sic.json”,格式正确(我检查了...)

当我运行dev_appserver 时, 使用 Chrome 开发人员工具,我将返回响应视为类型:

Content-Type:application/octet-stream

当我在 jQuery/Javascript 中检索这些结果时,该字符串未被识别为 JSON; 如果强迫我先使用 JSON.Parse...

但是当我实际部署时,app yaml 配置似乎可以工作;它将静态文件作为 JSON 提供,因此 JSON.Parse 是不必要的......

在为文件提供 http_headers 服务方面,我应该期望 dev_appserver 与实时部署不同吗?

【问题讨论】:

标签: json file google-app-engine yaml


【解决方案1】:

我不确定Content-Type 是否是要在http_headers 中指定的标头之一。假设您在 app.yaml 中没有其他关于模板/数据目录的内容,则以下内容将按预期工作:

- url: /data
  static_dir: templates/data
  mime_type: application/json

【讨论】:

  • 谢谢;没有其他对 /data 或 templates/data 的引用(但有对模板/脚本、模板/样式等的引用)我尝试了您的建议;直接使用 mime_type。它的行为相同;当我在本地部署(开发)时仍然提供 application/octet-stream (不受欢迎),但在实际部署到 production 时提供 application/json ......也许我做错什么了吗?
  • 也许......我在发布答案(在 Mac OS 上)之前自己尝试过,只是为了确保。它就像一个魅力。您可以将模板/数据临时移动到静态/数据或其他内容中,并按原样保留url: /data。看看这是否有效。如果确实如此,那么可能还有其他东西会覆盖模板/数据设置。否则,您是否有另一个处理程序映射到相同的 /data url?
  • 嘿@alex,我试过你的建议,它奏效了!所以你的理论一定是正确的,也许其他东西会覆盖模板/数据设置。注意:我不知道为什么当我部署到生产环境时这不是真的;你认为它值得调查,还是你认为它可能是一个错误?另请注意:我切换回 http-headers: Content-Type:application/json ,这也有效。但 mime_type 方法更好。再次感谢!
  • 在我的脑海中,当您部署到他们的生产服务器时,可能是由于 app.yaml/skip_files 某些文件被忽略(反之亦然)。 OTOH,我看不出这会如何影响 mime_type 或标题。另一件事:如果您使用的是 Jinja2,其模板的默认目录确实是“模板”,所以这可能是另一个原因。但同样,我不明白开发与生产应该如何或为什么不同......
猜你喜欢
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-17
  • 2012-12-14
  • 1970-01-01
  • 2020-04-18
相关资源
最近更新 更多