Grails,用Rest扩展

Grails,用Rest扩展,rest,grails,Rest,Grails,我有一个现有的域、控制器、视图(为后者自动生成),它在浏览器中按预期工作。 若我的URL是…/user/show/1或…/user/show,那个么它也可以在curl中工作,因为我使用的操作违背了REST原则。 因此,我已经添加到URLMappings文件中 "/rest/user/$id?"(resource: "user") 它使用自动生成的控制器。 现在可以使用curl和…/rest/user/1,但不能使用…/rest/user-它运行show方法而不是index方法。但是…/us

我有一个现有的域、控制器、视图(为后者自动生成),它在浏览器中按预期工作。 若我的URL是…/user/show/1或…/user/show,那个么它也可以在curl中工作,因为我使用的操作违背了REST原则。 因此,我已经添加到URLMappings文件中

 "/rest/user/$id?"(resource: "user") 
它使用自动生成的控制器。 现在可以使用curl和…/rest/user/1,但不能使用…/rest/user-它运行show方法而不是index方法。但是…/user确实会转到索引并返回一个列表。 虽然浏览器继续工作,但我注意到URL是rest/用户类型的

所以我觉得我还没有真正理解这一点。在URLMappings文件中可以有两条指向同一位置的规则吗?根据Grails 2.4.4文档,没有id的url将使用index()方法,../rest/user不是-它将转到show()

我所做的很有效,但我很肯定我做得不对

问候,,
John

我认为grails为您的域创建了Restful UserController。但是,如果您已经拥有UserController,则使用您自己的控制器。你必须让它安静。研究


还可以尝试手动创建控制器的URL映射。

这样文档就不会真正创建了?选择是通过REST或浏览器访问域,如果我希望它是自动的?我使用了两个不同的控制器。一个用于REST,另一个用于Web。我为每个控制器创建了映射。如果您已经有一个UserController for Web,请尝试将其重命名为UserWebController并为其创建url映射。我认为grails试图将UserController用作RESTful,但它不是RESTful,或者是RESTful?我认为grails需要RESTful控制器来让您的域可用,如果您还没有,grails将为您创建一个RESTful控制器或使用一些默认的RESTful控制器。但是您已经有了一个UserController。请看一下GrailsRestfulController。它是RestFulController的模板。Ctrl+Shift+T并在编辑器中输入RestFulController。我之前在我的用户域上使用了grails generate restful控制器,它重写了我现有的UserController(在运行它之前我已经备份了它)。有趣的是,这并没有扩展RestfulController,所以我刚刚意识到,如果使用curl with-H选项,controller for User将返回xml或json。但是,尽管简单的“localhost:8090/myapp/user”返回一个用户列表(好),“localhost:8090/myapp/user/1”返回一个404错误。