2009-06-05 28 views
7

假设我们有一个grails web应用程序暴露几个资源。RESTful grails应用程序:干起来UrlMapping

  • 标签
  • 网址
  • 用户

应用程序有一个传统Web界面将用户和一些管理互动。 我们希望通过RESTful API将应用程序中的资源公开给客户端,并且我们不希望应用程序的这部分混乱我们已有的控制器和代码。 所以我们想出了以下几点:

如果网络界面提供host/app_path/url/[list|show|create]我们希望REST API在/host/app_path/rest/url

所以我们结束了以下UrlMappings文件:

的问题是,这是不完全的最干的事儿在这里。随着我们添加更多资源(如标签),情况会变得更糟。他们将转化还非常类似的代码,另外三个块...

非CRUD功能会之类的具体准则和搜索等...

我们试图产生一个循环的映射关闭,但没有成功。我们在这里完全走错了路吗?

回答

7

我推荐以下映射:

"/rest/url/$id?"(resource:"urlRest") 

下面是HTTP方法动作映射,这将创造的urlRestController:

GET   show 
PUT   update 
POST  save 
DELETE  delete 

我明白你为什么会想映射/ rest/url POST保存和/ rest/url/id PUT更新,但这违背了那些动词的意思。一个PUT应该是唯一的方法来添加一个新的url和POST是更新url的唯一方法。如果您的约束是保持您的当前控制器代码不变,那么按照您的布局方式进行操作将会起作用并且可能是最好的方法。然而,我的猜测是,你的控制器可能已经被编码来处理默认映射就好(更新/删除给出错误,如果没有ID,显示重定向到如果没有ID列表等)。

+1

啊,PUT/POST的东西:D – kungfoo 2009-07-15 07:07:27