如何在Grails中获取资源的URI?

时间:2011-06-14 12:21:34

标签: rest grails groovy

一个非常基本的问题。我想为我的应用程序中的某些对象提供URI。例如,资源位于:

http://localhost:8080/myapp/user/1

但是,我想序列化这样的User对象。此序列化应包含对象本身的公共URI。因此,例如,模型有一个新方法serializeToSomething,它将序列化:

id: 1
username: JohnDoe
email: johndoe@example.com
publicURI: http://localhost:8080/myapp/user/1

如何让模型实例知道其网址?

一些注释: 这必须发生在模型,控制器或服务的范围内,并且不在视图中。此外,我想要对此进行硬编码。

3 个答案:

答案 0 :(得分:4)

请参阅相关问题Can I use grails tag outside of GSP?

基本上你可以在控制器或服务中使用g.createLink,它会返回一个字符串。所以你可以这样做:

def uri = g.createLink(controller: 'user', action: 'show', id: user.id, absolute: true)

答案 1 :(得分:0)

我个人最终序列化了3件事:controller名称,action名称(通常为“show”)和id。然后我在g.createLink中在视图中显示反序列化对象时使用了这三个。

当然,如果您需要反序列化的对象供外部使用,这将无效。

答案 2 :(得分:0)

您可以使用

在控制器中获取网址
request.forwardURI

之前已经问过similar question