2014-09-01 51 views
0

有2个模型:实体和子实体。实体可以有许多连接的子实体(一个:多个关系)。RESTful网址 - 获取新子实体

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

所以应该正确的网址来获得空Subentity像/实体/ {id}/Subentity /空?或者我错了?

回答

0

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

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

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