我有Book资源和作者资源。他们之间有联系,因为 - 显然 - 作者写了一本书,所以GET Book URL就像:
GET: /authors/{author_name}/books/{book-title}
这很好。
然而,当涉及到创建(POST)相关资源(在本例中是一本书)时,我感到困惑,并且在Symfony区域中无法找到关于该主题的任何内容。有两种可能性:REST推荐的一个:
POST: /authors/{author_name}/books/{book_title}
Symfony实用主义 - 只是:
POST: /books
后者又在表格中发送作者和标题 - 前者不需要。
在Symfony中如何完成的常用方法是使用表单,我正在使用它。当我采取务实的态度时,一切都很好。所有数据,包括作者和书籍的标题都不是网址的一部分 - 所有内容都在发送的形式中。
问题在于我想采用REST推荐的方法。然后分割数据:一些是形式,另一些是URL的一部分。
我们假设我想选择" elaborative"包含一些关键数据的URL。我如何"合并"表单数据在表单验证之前?
(另请注意,我不能要求"标题"以及"作者"字段 形式,尽管它们实际上是将Book保存到数据库时需要。)
答案 0 :(得分:-1)
REST推荐的一个:
POST: /authors/{author_name}/books/{book_title}
首先,我完全不同意这是" REST推荐"办法。假设book_title
是您的资源标识符,建议的方法是:
POST: /authors/{author_name}/books
请求的有效负载的book_title
部分。
其次,我认为使用author_name
和book_title
作为标识符是一个很大的错误。如果他们改变怎么办?那些同名的书籍和作者怎么样?如果一本书作为多位作者怎么办?
所以要回答你的问题,你就不会有问题因为" REST推荐"方法是"实用的"方法
示例:
GET /books/{id}
POST /books
GET /authors/{id}
POST /authors