我正在尝试创建一个模拟休息服务。基本上有两个组件。我需要一个具有动作和视图的控制器,它允许我创建ResourceMappings,并在其中创建一个uri和我将传回的模拟响应之间的映射。第二个组件是所有其他URL的全部Grails url映射,以便当它们碰到这个应用程序的URI时,它们将被发送到我的catch所有控制器,它将返回它们之前创建的映射响应。Grails捕获所有的url映射,但有例外
例如...我转到url http://someserver.com:1234/restMapping/list。这个网址是catch all规则的例外。它使我能够创建一个休息uri映射。在这里,我创建了映射/模拟服务/测试,并给它一个内容类型为text/plain的响应“This is a test”。现在,如果我去的url http://someserver.com:1234/mockservice/test我应该击中所有发送给控制器的所有内容,该控制器返回内容类型为text/plain的页面和响应“This is a test”。
我试过以下,它似乎并没有工作。有没有人有任何想法?
static mappings = {
"/$control/**" {
controller = "catchAllHandler"
action = "index"
constraints {
control(validator: {!['restMapping','css','js','images'].contains(it)})
}
}
"/$controller/$action?/$id?"{
}
"/"(controller:"restMapping", action="index")
"500"(view:'/error')
}
一个有趣的事情要注意的是,当我摆脱**和吨像$ S1?/ $ S2?/ $ S3的其他变量的增加?等等,然后它似乎工作。问题是我不知道我试图映射uri多长时间,所以我宁愿使用**来捕捉所有例外情况,但我有一些例外情况。
Vithun,我确实尝试过你的想法,并没有得到预期的效果。显然这个顺序没有直接的关系,你不能把更具体的url映射放在第一个和更通用的映射之后。 (还是)感谢你的建议。 – gaoagong 2011-05-16 17:19:39