【问题标题】:REST url for create and edit forms用于创建和编辑表单的 REST url
【发布时间】:2011-07-03 13:31:33
【问题描述】:

在 SO 中的 rest url 上有相当不错的线程。

Is this a bad REST URL? Understanding REST: Verbs, error codes, and authentication

我也看到了一个很好的资源here

问题是如何表示创建和编辑表单的 url。 So 链接没有明确说明,但微格式链接建议

GET /people/new  

返回用于创建新记录的表单

GET /people/1/edit

返回一个表单来编辑第一条记录

不太喜欢在 url 中使用动词,想知道是否有更好的选择来表示相同。

【问题讨论】:

  • 我喜欢并使用/people/createform/people/1/editform

标签: rest


【解决方案1】:

您会发现对 URL 的结构没有达成共识的原因是,当开发人员开始了解 REST 时,他们会发现该结构与客户端无关,而只是美学和服务器框架实现的功能。

但是,有一种标准化的方法可以实现您想要实现的目标。

GET /people/1
Content-Type: application/vnd.hal+xml
=>
<resource rel="self" href="/people/1">
  <link rel="edit" href="/people/1/editform"/>
  <link rel="urn://vnd.acme.rels/create" href="/people/createform"/>
  <name>Joe Foo</name>
</resource>

通过将链接嵌入响应中,客户端可以发现执行所需操作所需的 URI。但是,为了发现 URI,客户端需要事先了解正在使用的链接关系(“rel”)。在这种情况下,我们使用了“编辑”,因为它具有在IANA Link Registry 中描述的明确定义的行为。据我所知,用于访问创建表单的另一个链接没有标准名称,因此我冒昧地创建了一个唯一命名的链接关系。

顺便说一句,我碰巧使用了媒体类型 application/hal+xml,因为它是一种灵活的超媒体格式,但很简单,无需阅读太多文档即可理解。

【讨论】:

  • +1 rel="edit" 和 IANA 链接注册表:我都不知道。但是,不幸的是它不是 HTML5 链接关系:w3.org/TR/2011/WD-html5-20110525/links.html#linkTypes
  • @Raedwald 别担心。链接关系独立于媒体类型。 HTML 只包括他们铸造的那些。您可以使用任何其他人。这里还有另一个注册表microformats.org/wiki/existing-rel-values
  • 查看人时返回创建人的链接没有意义。在 /people 而不是 /people/1 上执行 GET 时,您应该获得创建表单链接。您说链接结构无关紧要,但除非有人,否则无法发现链接以使人成为糟糕的设计。新的玩家表单不是玩家资源的一部分,因此将表单的链接包含为Link header 可能更有意义。 Link: &lt;player/new&gt;; rel="new" 而是作为所有人代表的一部分。
  • @Chase 有很多 UI 允许您在查看现有 foo 的同时添加新的 foo。如果我基于某种领域模型设计资源,那么您可能是正确的。但是,我没有,我的资源反映了我的应用程序工作流程。我很可能在我的/people 资源中也有一个创建链接。
  • 另外,GET /people 返回所有人员实体的列表是一种常见模式(无过滤器)。这比返回表单更具语义意义。
【解决方案2】:

最近发布的信息 RFC 促进了链接关系“create-form”和“edit-form”。更多信息可以位于https://www.rfc-editor.org/rfc/rfc6861

【讨论】:

  • 那么editedit-form有什么区别呢?如果我们已经有edit,为什么要首先引入edit-form? (我一定是错过了什么)
猜你喜欢
  • 2017-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-13
  • 2013-08-20
  • 2012-06-02
相关资源
最近更新 更多