繁体   English   中英

使用 Play Framework for Java,如何从控制器返回 500 响应?

[英]Using the Play Framework for Java, how do I return a 500 response from a controller?

我继承了一个 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的定义,并发现 status 只是类上的一个字段。 所以这就像我希望的那样工作:

renderJSON("{ 'status' : 'error' }");
response.status = Http.StatusCode.INTERNAL_ERROR;

renderJSON()这样的函数在内部会抛出RenderJson异常,所以在调用它之前必须设置状态码。

response.status = Http.StatusCode.INTERNAL_ERROR;
renderJSON(theJsonObject);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM