RESTful url - 获得新的subentity

时间:2014-09-01 13:14:41

标签: rest asp.net-web-api url-design

有两种模式:实体和Subentity。实体可以有许多连接的Subentities(一个:很多关系)。

服务器上有一个返回新Subentity的方法(我们称之为 GetEmptySubentity )。重点是,当你想要创建新的Subentity时,你按下一个按钮,模型来自服务器,其中一些字段已预先填充。其中一些Subentity预填充值取决于实体,因此我需要在此请求中传递实体ID。

因此,获取空Subentity的正确网址应该是 / Entity / {id} / Subentity / empty 吗?或者我得错了什么?

1 个答案:

答案 0 :(得分:0)

是的,你是。根据{{​​3}},您应该向REST客户端发送超链接,他们应该通过遵循这些超链接来使用API​​。为此,您需要一种超媒体格式,例如HTML,ATOM + XML,HAL + JSON,LD + JSON& Hydra等...(使用谷歌)。因此,通过HTML,结果应该包含一个HTML表单,其输入字段具有默认值等...您应该为RDFa添加语义,因此通过处理您的REST客户端将知道的HTML,该链接是关于创建一个新的资源。 Ofc,解析其他超媒体格式更容易。通过它们,您可以使用与RDF相同的概念(例如,通过JSON-LD或ATOM),或者您可以使用与供应商特定MIME类型(例如,通过HAL或ATOM)的链接关系,或者描述这些输入字段的自定义解决方案。因此,您通常会使用超链接获取必要的信息,并且您不必发送另一个请求来获取默认值。

如果您想使事情变得复杂,那么您可以向实体本身发送默认值的请求,以便发送属性的值,而不是发送带有输入字段的表单。您可以选择发送返回整个链接的请求,例如GET /Entity/{id}/SubEntity/offset=0&count=0可以返回一个空的子实体数组和创建表单。如果该表单非常大,您可以使用其他查询或路径参数,并且您不希望将其与每个与SubEntity集合相关的响应一起发送。 URL规范仅表示路径应包含层次结构部分,并且查询应包含URL的非层次结构部分。

顺便说一下。 REST只是一种交付方法,您不必将其映射到数据库实体。 REST资源和URL结构可能与您的数据库完全不同,因为您可以使用任何类型的数据存储机制与REST,甚至文件系统......