Grails 中 withFormat 的默认格式 3.x

Default format for withFormat in Grails 3.x

在 Grails 中,这可用于内容协商,尤其适用于实施 API:

withFormat {
    xml { ... some code that renders XML }
    json { ... some code that renders JSON }
}

现在,如果我需要默认格式,比如说 JSON,“...一些呈现 JSON 的代码”应该执行两次,一次用于 JSON选项和一次用于“*”选项,即 AFAIK“任何其他匹配格式”,这是指定默认格式的一种方式,如:

withFormat {
    xml { ... some code that renders XML }
    json { ... some code that renders JSON }
    "*" { ... some code that renders JSON }
}

我的问题是:

  1. 这是将默认格式指定为 JSON 的正确方法吗?

  2. 有没有办法让两个选项不重复相同的代码? (我的意思是:json, "*" { ... }

而不是这个...

withFormat {
    xml { ... some code that renders XML }
    json { ... some code that renders JSON }
    "*" { ... some code that renders JSON }
}

使用这个:

withFormat {
    xml { ... some code that renders XML }
    "*" { ... some code that renders JSON }
}

这样做的一个问题是它是高度冗余的,并且必须在每个控制器方法中完成。建议将此功能移动到 HandlerInterceptor 或使用类似 Beapi API Framework plugin