我正在构建一个包含啤酒数据的API。 beer_lookup
表中的每种啤酒都具有以下属性:
{
"beerid": "e2e73352-1cf3-4bd7-943a-e682c2498c09",
"beername": "Barrel-Aged Mexican Cake (Bourbon)",
"description": "",
"abv": "10.5",
"ibu": "",
"status": "Verified",
"dateadded": "2017-08-28T00:00:00"
}
在单独的查找表中,我有brewery
和style
通过相交表链接到啤酒。
在从http://localhost:5000/api/beer/{beerid}
询问啤酒的json响应中,我想提供啤酒对象和ref链接(HATEAOS样式)到啤酒的其他方面。我的回应目前看起来像这样,除了啤酒可以有多个啤酒厂(合作)的情况,我认为还可以。我应该如何处理多个"rel": "brewery"
链接? _links
是否应包含名为breweries
的数组或其他内容?我知道我可以完全返回自己想要的任何东西,但是我想知道是否有类似的标准。
{
"value": {
"beerid": "e2e73352-1cf3-4bd7-943a-e682c2498c09",
"beername": "Barrel-Aged Mexican Cake (Bourbon)",
"description": "",
"abv": "10.5",
"ibu": "",
"status": "Verified",
"dateadded": "2017-08-28T00:00:00"
},
"_links": [
{
"href": "http://localhost:5000/api/beer/e2e73352-1cf3-4bd7-943a-e682c2498c09",
"rel": "self",
"method": "GET"
},
{
"href": "http://localhost:5000/api/brewery/32efb254-b418-4c59-bc30-5cec97e3d702",
"rel": "brewery",
"method": "GET"
},
{
"href": "http://localhost:5000/api/brewery/989b1eaa-fe92-423b-a275-4895ed90da51",
"rel": "brewery",
"method": "GET"
},
{
"href": "http://localhost:5000/api/style/2689dcb0-9419-43c8-918f-4fc411fc0f90",
"rel": "style",
"method": "GET"
}
]
}
编辑:可能与此相关:
{
"value": {
"beerid": "e2e73352-1cf3-4bd7-943a-e682c2498c09",
"beername": "Barrel-Aged Mexican Cake (Bourbon)",
"description": "",
"abv": "10.5",
"ibu": "",
"status": "Verified",
"dateadded": "2017-08-28T00:00:00"
},
"_links": {
"self": {
"href": "http://localhost:5000/api/beer/e2e73352-1cf3-4bd7-943a-e682c2498c09"
},
"breweries": [
{
"href": "http://localhost:5000/api/brewery/32efb254-b418-4c59-bc30-5cec97e3d702"
},
{
"href": "http://localhost:5000/api/brewery/989b1eaa-fe92-423b-a275-4895ed90da51"
}
],
"style": {
"href": "http://localhost:5000/api/style/2689dcb0-9419-43c8-918f-4fc411fc0f90"
}
}
}
答案 0 :(得分:1)
我想提供啤酒对象和ref链接(HATEAOS样式)到啤酒的其他方面。
太棒了
您可能应该看一下JSON超媒体格式,而不是自己动手。
不过,不是你问的。
可能与此
也许-我认为这取决于您希望客户如何使用链接。是否希望客户关心哪个啤酒厂链接是哪个?还是对啤酒厂感兴趣的客户希望全部加载?
想想一个网页-我们在html中包含图像链接,但是希望客户端下载并呈现所有链接。超链接(由a标记定义)通常带有一些语义内容,以使客户端可以区分它们。
因此您的啤酒厂可能是带有自我链接的嵌入式对象列表,而不是啤酒资源本身上的链接。
我认为HAL specification上的示例很好地说明了这两个选项。