在 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”无法正确呈现

是否有可视化 grails webflow 的工具?

使用 Spring Security 插件从 Grails 应用程序注销时获得 HTTP 状态 405

Grails 如何知道将“布局”应用于它呈现的页面?

Grails - 将 UUID 呈现为 JSON

在 grails 中渲染 JSON