0

有两种模型:实体和子实体。实体可以有许多连接的子实体(一:多关系)。

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

那么获取空子实体的正确 url 应该像/Entity/{id}/Subentity/empty吗?或者我有什么问题?

4

1 回答 1

0

是的,你是。根据统一接口/hateoas 约束您应该向您的 REST 客户端发送超链接,并且他们应该按照这些超链接使用 API。为此,您需要一种超媒体格式,例如 HTML、ATOM+XML、HAL+JSON、LD+JSON 和 Hydra 等...(使用 google)。因此,通过 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 一起使用,甚至是文件系统......

于 2014-09-08T23:57:50.523 回答