2013-11-22 70 views
1

我正在Nodejs中做一个REST Web服务器,我正在考虑使用Collection+JSON作为超媒体类型。链接到其他收藏项目的收藏品+ JSON项目

但是我不明白是否有可能在集合1到n的关系中表示。 因此,如果例如我有一个集合篮子是可以使篮子内的项目指向其他定义集合的项目?

+0

你应该看看超媒体API。也许这就是你要找的。 – CMW

回答

0

可以使用collection link relation,它被描述为:

是指代表集合其中 当前资源是其成员的资源。

这似乎满足您的需要。

0

使用传统的电子商务示例,下面介绍如何构建产品的集合JSON端点。请注意,您的客户端应该通过rel-tag进行分组。您的rel标签列表是您与客户的“合同”。 “这个rel标签总是意味着这个。”

"collection": 
{ 
    "href": "/products/1234.json", 
    "items": 
    [ 
    { 
     "name": "name", 
     "value": "10 Speed Bike" 
    } 
    { 
     "name": "manufacturer", 
     "value": "Schwin" 
    } 
    { 
     "name": "price", 
     "value": 150.00 
    } 
    ], 
    "links": 
    [ 
    { 
     "href": "/products/1234/attachments/flier.pdf", 
     "rel": "attachment", 
     "prompt": "Flier from the Manufacturer", 
     "render": "link" 
    }, 
    { 
     "href": "/products/1234/attachments/specs.pdf", 
     "rel": "attachment", 
     "prompt": "Spec Sheet from Manufacturer", 
     "render": "link" 
    }, 
    { 
     "href": "/products/1234/attachments/warranty.pdf", 
     "rel": "attachment", 
     "prompt": "Limited Lifetime Warranty", 
     "render": "link" 
    }, 
    { 
     "href": "/store/attachments/returns.pdf", 
     "rel": "attachment", 
     "prompt": "Our Return Policy", 
     "render": "link" 
    }, 
    { 
     "href": "/images/1235478324.png", 
     "rel": "product-image", 
     "prompt": "A Schwin 10-speed bike in red", 
     "render": "image" 
    }, 
    { 
     "href": "/images/1235478355.png", 
     "rel": "product-image", 
     "prompt": "A girl riding a 10-speed bike.", 
     "render": "image" 
    }, 
    { 
     "href": "/images/1235478385.png", 
     "rel": "product-image", 
     "prompt": "A grandma watching grandkids ride bicycles.", 
     "render": "image" 
    }, 
    { 
     "href": "/images/1235478545.png", 
     "rel": "swatch", 
     "prompt": "Radiant Red", 
     "render": "image" 
    }, 
    { 
     "href": "/images/1235478545.png", 
     "rel": "swatch", 
     "prompt": "Brilliant Blue", 
     "render": "image" 
    }, 
    { 
     "href": "/images/1235478588.png", 
     "rel": "swatch", 
     "prompt": "Stunning Silver", 
     "render": "image" 
    }, 
    { 
     "href": "/blog/2014/07/26", 
     "rel": "content", 
     "prompt": "Our store now sells Schwin bicycles!", 
     "render": "link" 
    }, 
    { 
     "href": "/manufacturers/schwin", 
     "rel": "manufacturer", 
     "prompt": "Schwin", 
     "render": "link" 
    },  ] 
} 

在这个例子中,客户会知道,一个“样本” REL-标签的存在意味着它应该显示颜色样本节......一个样本为每一个“版本标签”。如果有1个样本比很多样本,你的客户甚至可能呈现不同的样子。

你可能会因为想扩展集合+ JSON(I've extended it extensively)而被原谅。集合+ JSON的冗长语法,我最初认为这是一个问题,事实上它提供了一种扩展方法,同时保持向后兼容性。