Я создаю 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
связаны с пивом через таблицы пересечений.
ВОтвет json при запросе пива от http://localhost:5000/api/beer/{beerid}
Я хочу предоставить объект пива и ссылки на ссылки (стиль 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"
}
}
}