【问题标题】:How to get the URI of a resource in Grails?如何在 Grails 中获取资源的 URI?
【发布时间】:2011-09-14 15:53:30
【问题描述】:

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

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

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

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

如何让模型实例知道其 URL?

一些注意事项:这必须发生在模型、控制器或服务的范围内,而不是在视图内。另外,我不想对此进行硬编码。

【问题讨论】:

标签: rest grails groovy


【解决方案1】:

查看相关问题Can I use grails tag outside of GSP?

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

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

【讨论】:

  • 这看起来很有希望。我明天试试看。
【解决方案2】:

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

当然,如果您需要反序列化对象供外部使用,这将不起作用。

【讨论】:

    【解决方案3】:

    您可以使用

    在控制器中获取 url
    request.forwardURI
    

    之前有人问过similar question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-21
      • 2018-01-25
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多