Grails 如何根据内容类型请求头将结果呈现为JSON或gsp视图?

Grails 如何根据内容类型请求头将结果呈现为JSON或gsp视图?,grails,Grails,我想在html视图和RESTful API的控制器中重用相同的逻辑。 在Grails中实现这一点的最佳方法是什么?我相信您正在寻找: (此处代码取自添加了JSON的链接) 我相信您正在寻找: (此处代码取自添加了JSON的链接) 看起来不错。是否可以将js/xml部分移动到某个公共位置,例如拦截器之后?(因为总是一样)@tim_yates,你发布的代码不会处理请求内容类型。只处理响应。从Grails 2.0开始,您需要request.withFormat{}。@Gregg-问题是如何根据“内容类

我想在html视图和RESTful API的控制器中重用相同的逻辑。
在Grails中实现这一点的最佳方法是什么?

我相信您正在寻找:

(此处代码取自添加了JSON的链接)


我相信您正在寻找:

(此处代码取自添加了JSON的链接)


看起来不错。是否可以将js/xml部分移动到某个公共位置,例如拦截器之后?(因为总是一样)@tim_yates,你发布的代码不会处理请求内容类型。只处理响应。从Grails 2.0开始,您需要request.withFormat{}。@Gregg-问题是如何根据“内容类型请求头”返回不同的响应,HTTP请求使用该头指示它可以接受哪种类型的内容类型作为响应。您关于如何处理请求格式的信息虽然有用,但与问题无关。您的意思是什么?您将始终呈现相同的响应?也许会考虑问另一个关于你所追求的问题。@ CdZaqq——对,但是你认为如何将它建立在请求头上?在Grails2.0中实现这一点的唯一方法是使用request.withFormat,因此它确实适用于这里。withFormat本身不会查看请求头。它只会查看URL/controller/action.json | xml.com看起来不错。是否可以将js/xml部分移动到某个公共位置,例如拦截器之后?(因为总是一样)@tim_yates,你发布的代码不会处理请求内容类型。只处理响应。从Grails 2.0开始,您需要request.withFormat{}。@Gregg-问题是如何根据“内容类型请求头”返回不同的响应,HTTP请求使用该头指示它可以接受哪种类型的内容类型作为响应。您关于如何处理请求格式的信息虽然有用,但与问题无关。您的意思是什么?您将始终呈现相同的响应?也许会考虑问另一个关于你所追求的问题。@ CdZaqq——对,但是你认为如何将它建立在请求头上?在Grails2.0中实现这一点的唯一方法是使用request.withFormat,因此它确实适用于这里。withFormat本身不会查看请求头。它只会查看URL/controller/action.json | xml。
import grails.converters.XML
import grails.converters.JSON

class BookController {

    def list() {
        def books = Book.list()

        withFormat {
            html bookList:books
            js { render books as JSON }
            xml { render books as XML }
        }
    }
}