一个非常基本的问题。我想为我的应用程序中的某些对象提供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
如何让模型实例知道其网址?
一些注释: 这必须发生在模型,控制器或服务的范围内,并且不在视图中。此外,我不想要对此进行硬编码。
答案 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)