在 Grails 中使用 HTTP 状态代码呈现 JSON 的简单方法
Posted
技术标签:
【中文标题】在 Grails 中使用 HTTP 状态代码呈现 JSON 的简单方法【英文标题】:Easy way to render JSON with HTTP status code in Grails 【发布时间】:2012-05-30 09:03:50 【问题描述】:有没有明确的"text/json"
指定的简写方法?
def remoteError =
render( status: 500, contentType: "text/json")
error( exception: "a remote exception occurred")
我尝试使用as JSON
...没有返回内容但状态码正确...
render( status: 500, exception: params.exception) as JSON
【问题讨论】:
【参考方案1】:如果您对render 使用转换器参数,那么您不能像使用gsp 视图时那样指定任何其他参数,例如状态。但是,您可以在调用渲染之前设置响应状态:
response.status = 500
render([error: 'an error occurred'] as JSON)
【讨论】:
这实际上抛出了一个强制转换异常,因为params.exception
是一个字符串。我试过def errorMsg = [error: 'an error occurred']
render errorMsg as JSON
,效果很好。
@RaffiM 当然,我改变了我的答案来渲染一个地图而不是一个不起作用的字符串。
不得不再做一次细微的调整,render ([error: 'sdf'] as JSON)
,谢谢提示【参考方案2】:
render(status:500,text:(errors as JSON).toString(),contentType: 'application/json')
【讨论】:
以上是关于在 Grails 中使用 HTTP 状态代码呈现 JSON 的简单方法的主要内容,如果未能解决你的问题,请参考以下文章
使用条件运算符在 Grails 中呈现“as JSON”无法正确呈现