REST中是否有标准来定义响应相关实体是否必须作为对象解析或是否是惰性超链接?

时间:2013-07-12 16:36:10

标签: api rest

我想向我的REST客户端提供一种机制,用于定义响应相关实体是否必须作为对象解析或是否是惰性超链接。

这是一个普通的json输出:

{
  "userName" : "jhon",i
  ...
  "lastPurchasedBooks" : [ { "ISBN":"12345", "Title":"Abc", ...}, ...]
}

这是一个懒惰的选项:

{
  "userName" : "jhon",
  ...
  "lastPurchasedBooks" : [ "http://xxx/books/12345", ...]
}

我正在考虑将解决方案定义为内容协商(不同的接受标头值,特定网址等)

有一个“标准”来定义它吗?

2 个答案:

答案 0 :(得分:1)

这取决于您对自定义媒体类型的定义;这就是如何将数据的语义传达给请求者。

如果您的自定义媒体类型(比如application/json+booklist)被定义为包含图书实体列表,那么我想它可能没问题,

然而,我倾向于选择后者,因为这是“典型的”REST方式(即,您已经确定为“懒惰”的方式)。因此,在这种情况下,您将拥有一个名为application/json+book的自定义媒体类型,它定义了Book实体的JSON响应。相应地,您的自定义媒体类型application/json+booklist将被修改为包含指向Book个实体的链接列表,而不是包含实际Book个实体的列表。

答案 1 :(得分:0)

您的问题要求使用 HALSiren 等超媒体格式。

在 HAL 中,您可以通过链接表达关系,但如果您想包含完整的对象表示,您可以将整个对象包含在 _embedded 中。

_embedded 中的对象本身仍然有一个 URI。