【问题标题】:Grails RestfulController actions and resourcesGrails RestfulController 动作和资源
【发布时间】:2014-11-10 15:13:46
【问题描述】:

我现在有点困惑,这应该可以工作。文档说: http://grails.org/doc/latest/guide/single.html#extendingRestfulController

9.1.5.1 扩展 RestfulController 超类

开始这样做的最简单方法是创建一个新控制器 对于扩展 grails.rest.RestfulController 超级资源的资源 班级。例如:

class BookController extends RestfulController { static responseFormats = ['json', 'xml'] BookController() { super(Book) } }

要自定义任何逻辑,您只需覆盖适当的操作即可。 下表提供了操作名称的名称和 它们映射到的 URI:

HTTP 方法 URI 控制器操作
GET /books index
GET /books/create 创建
POST /books 保存
GET /books/${id} 显示
GET /books/${id}/edit 编辑
PUT /books/${id} 更新
DELETE /books/${id} 删除

我已经创建了 BookController 以及关联的 Book 域类,但我注意到我无法通过记录的 uri 访问(引导添加书籍)书籍:
/books/${id}

我可以使用非复数域名和操作访问它:
/book/show/1

当我尝试将 @Resource(uri='/books') 添加到 Book 域类时,这也无济于事。 grails不再支持他了吗?我必须使用动作动词吗?

我正在使用 grails 2.4.2

谢谢。

【问题讨论】:

  • 您是否在您的UrlMappings.groovy 中设置了"/books"(resources:"book")
  • 你是对的,通过添加它确实有效。谢谢你。看来,如果我在域中使用 @Resource 它可以按需要工作。如果我创建一个扩展 RestfulController 的控制器,则映射将被操作基路径覆盖。该文档非常具有误导性。

标签: rest grails


【解决方案1】:

当您扩展RestfulController 时,您负责在UrlMappings.groovy 中设置资源映射。与 Domain 类上的 @Resource 注释不同。

例如:

// UrlMappings.groovy
"/books"(resources:"book")

【讨论】:

  • 谢谢。如果文档说明了这一点,那就太好了。他们以我们所有人的方式阅读它;是隐含的。
  • 我们都被默认的 "/$controller/$action?/$id?(.$format)?" UrlMapping 绊倒了,以为其他东西正在注册明确的。
  • 没关系。鉴于所有可用的选项,有些人很难理解每种方法的实施意味着什么。如果我今天有时间,我会看到有关分叉文档或至少创建 JIRA 的信息。除非你打败我。 (:
猜你喜欢
  • 1970-01-01
  • 2013-10-22
  • 1970-01-01
  • 2012-02-23
  • 1970-01-01
  • 2012-04-11
  • 2012-10-03
  • 2014-03-17
  • 1970-01-01
相关资源
最近更新 更多