2

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

这是一个正常的 json 输出:

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

这是懒惰的选择:

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

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

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

4

2 回答 2

1

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

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

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

于 2013-07-12T16:47:55.390 回答
0

您的问题需要像HALSiren这样的超媒体格式。

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

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

于 2021-03-18T14:43:38.247 回答