2015-03-19 64 views
0

我有一个现有的域,控制器视图(为后者自动生成),它在浏览器中按预期工作。 如果我有.../user/show/1或.../user/show的URL,它也可以在curl中工作,也就是说,我使用违背REST原则的操作。 所以,我已经加入到URLMappings文件Grails,与休息延伸

"/rest/user/$id?"(resource: "user") 

它使用自动生成的控制器。 现在可以使用curl和.../rest/user/1但不能.../rest/user - 它运行show方法而不是索引方法。但是... /用户会去索引并返回一个列表。 虽然浏览器继续工作,但我注意到这些URL是其他/用户类型的。

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

我有工作,但我很确定我没有做对。

问候, 约翰

回答

0

我觉得Grails的创建域雷斯特夫尔UserController的。但是,如果你已经有了UserController,你将使用自己的控制器。你必须让它RESTFul。看看9.1.5.1 Extending the RestfulController super class

也尝试创建urlmapping你的控制器manaully。

+0

那么文档是不是真的创造呢?如果我希望它是自动的,可以选择通过REST或通过浏览器访问域名? – John 2015-03-19 12:46:25

+0

我用2个不同的控制器做到了。一个用于REST,另一个用于Web。我为每个控制器创建了映射。如果你已经有一个用于Web的UserController,尝试将其重命名为UserWebController并为其创建URL映射。我认为Grails尝试使用UserController作为RESTful,但它不是RESTful或是它? 我认为grails需要RESTful Controller来使你的域可用,如果你已经没有,那么grails会为你创建一个或者使用一些默认的RESTful控制器。但是你已经有一个UserController。 – CyberAleks 2015-03-19 13:15:02

+0

看看Grails RestFulController。它是RestFulController的模板。 Ctrl + Shift + T并在编辑器中输入RestFulController。 – CyberAleks 2015-03-19 13:22:12