Rest 实用URL与推荐URL

Rest 实用URL与推荐URL,rest,symfony,symfony-forms,Rest,Symfony,Symfony Forms,我有书籍资源和作者资源。它们是相互关联的,因为——很明显——一位作者写了一本书,所以GET Book URL如下所示: GET: /authors/{author_name}/books/{book-title} 这很好 然而,当涉及到创建(发布)相关资源(在本例中是一本书)时,我感到困惑,在Symfony区域中找不到任何关于该主题的内容。有两种可能性: 建议的休息时间: POST: /authors/{author_name}/books/{book_title} 一个象征性的务实主义者—

我有书籍资源和作者资源。它们是相互关联的,因为——很明显——一位作者写了一本书,所以GET Book URL如下所示:

GET: /authors/{author_name}/books/{book-title}
这很好

然而,当涉及到创建(发布)相关资源(在本例中是一本书)时,我感到困惑,在Symfony区域中找不到任何关于该主题的内容。有两种可能性:

建议的休息时间:

POST: /authors/{author_name}/books/{book_title}
一个象征性的务实主义者——只是:

POST: /books
后者在表格中额外发送作者和标题-前者不需要这些

在Symfony中通常是通过使用我正在使用的表单来完成的。当我采取务实的态度时,一切都很好。所有数据,包括作者和书名,都不是URL的一部分,所有内容都是以发送形式发送的

问题是我什么时候愿意采用REST推荐的方法。然后数据被分割:一些数据形成表单,另一些数据是URL的一部分

假设我想选择一个包含一些关键数据的“精心设计”的URL。如何在验证表单之前“合并”表单数据

(还要注意,我不能要求表单中的“title”和“author”字段,尽管在将书籍保存到数据库时它们实际上是必需的)

建议的休息时间:

POST: /authors/{author_name}/books/{book_title}
POST:/authors/{author\u name}/books/{book\u title}

首先,我完全不同意这是“建议休息”的方式。假设
book\u title
是您的资源标识符,建议的方法是:

POST:/authors/{author\u name}/books

使用
book\u title
请求有效负载的一部分

其次,我还认为使用
作者姓名
书名
作为标识符是一个很大的错误。如果他们改变了怎么办?那么同名的书和作者呢?如果一本书有多个作者呢

所以要回答您的问题,您没有问题,因为“REST推荐”方法是“务实”方法

示例:

GET /books/{id}
POST /books

GET /authors/{id}
POST /authors

书籍或作者是规则的一个例子。再举一个例子:POST/book/{id}/chapter——这个怎么样<代码>文章/章节在有效负载中带有
图书id
是完全可以接受的。2.如果您希望强调这两个资源之间的关系,那么
POST/books/{id}/chapters
也可以工作,但是在这种情况下,您需要首先检查图书是否存在(如果不存在,则返回HTTP404),然后验证“chapter”的有效负载。这是一个两步的过程。这有意义吗?