playframework - 使用 Play Framework for Java,如何从控制器返回 500 响应?
问题描述
我继承了一个 Play Framework v1.2 应用程序,它同时提供网站和 API。API 控制器的现有错误处理策略用于renderJSON(error.message)
向我们的客户端返回错误,不幸的是创建了返回 200 的响应。
我想返回一个实际的状态码,4xx 或 5xx。问题是如果我使用error(message)
,会产生 500 响应,但 500.html 错误页面会启动并返回 HTML 而不是 JSON。我可以覆盖模板来呈现 JSON,但这会影响我们面向客户的网页。
我正在努力弄清楚如何仅为我们的 API 控制器手动设置响应状态代码,以及呈现 JSON 文档。
我对框架很陌生,并且一直在查看文档,但是对于 1.2 版,我没有看到很多选项。
解决方案
我不确定这是否是最好的解决方案,但它似乎是最直接的,无需处理将网站项目与 API 项目混合的更大问题。
我在这里找到了 Play Framework 1.2 版的源代码,https://github.com/playframework/play1/tree/1.2.x。
我能够找到的定义Response
并发现状态只是类上的一个字段。所以这就像我希望的那样工作:
renderJSON("{ 'status' : 'error' }");
response.status = Http.StatusCode.INTERNAL_ERROR;
推荐阅读
- c# - 我们可以在 C# 中使用点命令(SQlite 的特殊命令)吗
- sql - 相同的 SQL 查询无法在 SQL Server 中运行,但在 Azure SQL 转换中运行良好
- java - 为什么 Nashorn 添加两个整数会产生双倍?
- google-colaboratory - 如何使用 google colab 在 MyFolder 中运行文件“train.py”?
- elasticsearch - 如何为 Filebeat Nginx 模块指定管道?
- cryptography - 如何在 C# 中使用 RSA for Chilkat 加密内容并在 Java 中解密?
- xcode - Xcode 11.1 故事板问题
- android - Flutter Launcher:按下 Home 按钮时返回 HomeScreen
- php - 无法在 Laravel 中迁移文件
- python - 如何从 Keras 代码更改负 r2_score 结果