我正在使用angularjs配置文件维护grails 3.3.8应用。
REST API和angularjs资产由同一grails应用程序提供。目前,我不想将应用程序分为两个应用程序。
该应用程序使用JSON视图来呈现资源的JSON响应。
该应用程序还使用GSP视图插件来提供初始index.gsp
来服务angularjs应用程序。
由于使用了GSP视图插件,因此在500
,404
,401
等情况下,该应用程序始终呈现默认的gsp错误视图,而不使用JSON视图。错误。
当我删除grails-gsp
插件时,所有请求都将带有JSON响应。同样在出现错误的情况下。但是随后index.gsp
无法呈现。
是否可以告诉grails应用程序默认情况下应使用JSON视图,以防万一索引应使用gsp视图?
更新: 我想直接从URLMapping渲染视图而不创建控制器。
答案 0 :(得分:1)
是否可以告诉grails应用程序应使用JSON 视图默认情况下,以防万一,它应该使用gsp 查看?
是的。您可以从同一应用程序中提供许多不同的视图类型,包括GSON视图和其他GSP视图一起使用。
查看位于https://github.com/jeffbrown/webjsonviews的项目。
如果您运行该应用程序并使用浏览器向http://localhost:8080/person/index发送请求,您将看到HTML渲染的HTML,它是使用GSP在服务器端渲染的。
如果使用浏览器向http://localhost:8080/person/index.json发送请求,您将看到使用GSON视图呈现的JSON。
这将呈现HTML:
curl http://localhost:8080/person/index
这将呈现JSON:
curl http://localhost:8080/person/index.json
这将呈现JSON:
curl -H "Accept: application/json" http://localhost:8080/person/index
如果您希望默认内容类型为application/json
,则可以将以下内容添加到PersonController
:
static responseFormats = ['json', 'html']
这将导致以下代码返回JSON而不是HTML:
curl http://localhost:8080/person/index
我希望有帮助。