【问题标题】:Grails: RESTful web services data processing in different formatGrails:不同格式的 RESTful Web 服务数据处理
【发布时间】:2015-02-22 13:33:47
【问题描述】:

目前我正在使用 GGTS 3.6.0 开发 grails 2.4.3

要求 - grails Web 服务的工作原理。

现有 - 目前我的闭包作为 Web 服务为我工作,但输出是特定格式的(一次 JSON 或 XML)。

问题 - 在闭包(网络服务)中,我如何能够返回 JSON/XML 和其他格式。

关闭代码 -

def able_Webservice = {

   ableService.populateAbleBean(ableBean);
   ableService.settingWhereClause(ableBean);
   ableService.getDBData(ableBean);
   def jsonData = ableService.webservice_Data(ableBean);
   render jsonData as JSON

}   

【问题讨论】:

  • 你试过withFormat闭包吗?
  • 如何使用 withFormat?你能提供简单的例子吗?如何调用以及如何将该 URL 处理成 Closure?
  • 在下面查看我的答案。

标签: web-services rest grails exchangewebservices groovyws


【解决方案1】:

Grails 具有withFormat 功能。您可以根据传入的请求 Accept 标头、格式参数或 URI 扩展来呈现不同的响应。

您的代码希望:

def able_Webservice = {
   ableService.populateAbleBean(ableBean);
   ableService.settingWhereClause(ableBean);
   ableService.getDBData(ableBean);
   def data = ableService.webservice_Data(ableBean);
   withFormat {
      xml { render data as XML }
      json { render data as JSON }
   }
}

这使用内置的content negotiation

【讨论】:

    【解决方案2】:

    您可以使用控制器的respond 方法以最适合请求的格式呈现您的数据。如果 HTML 响应被选为最合适的,它将呈现由/views/controllerName/actionName 约定确定的模板。

    def able_Webservice = {
    
        ableService.populateAbleBean(ableBean);
        ableService.settingWhereClause(ableBean);
        ableService.getDBData(ableBean);
        def data = ableService.webservice_Data(ableBean);
        respond data
    }   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-10
      • 2023-03-30
      相关资源
      最近更新 更多