Как должны быть реализованы ссылки в стиле HATEOAS для коллекций RESTful JSON?

Чтобы упростить задачу и избежать именных коллизий, яя связывал ссылки в моих ресурсах записи вот так ...

{
    id: 211,
    first_name: 'John',
    last_name: 'Lock',
    _links: [
        { rel: 'self', href: 'htttp://example.com/people/211' }
    ]
}

Тем не менее, я могуt понять, как реализовать ссылки в коллекциях. Я потратил много времени на то, чтобы копаться в Интернете для примеров и других, чем использование не так скудноHAL I 'Я не могу решить мою проблему.

[
    {id:1,first_name:.....},
    {id:2,first_name:.....},
    {id:3,first_name:.....}, 
    "_links": "Cant put a key value pair here because its an-array" 
]

Что означает, что я должен обернуть массив в контейнерный объект.

[
    people: [ {id:1,first_name:.....} ],
    links: [ { rel:parent, href:.... ]
]

Но это отличается от единственного ресурса, поэтому ясобираюсь заставить запись вести себя как коллекция и обернуть ее в контейнер ....

{
    person: {
        id: 211,
        first_name: 'John',
        last_name: 'Lock',
        _links: 
    },
    links:[
        { rel: 'self', href: 'htttp://example.com/people/211' }
    ] 
}

На первый взгляд это выглядит довольно аккуратным решением. Результирующий JSON на один уровень глубже, но HATEOAS был реализован, так чтовсе хорошо, верно? Не за что. Настоящее жало приходит, когда я возвращаюсь к коллекции. Теперь, когда отдельный ресурс был упакован в контейнер, чтобы соответствовать коллекции, коллекция должна быть изменена, чтобы отразить изменения. И вот тут-то и становится некрасиво. Очень некрасиво. Теперь коллекция выглядит так ...

{
    "people": [
        {
            "person": {
                ....
            },
            "links" : [
                {
                    "rel": "self",
                    "href": "http://example.com/people/1"
                }
            ]
        },
        {
            "person": {
                ....
            },
            "links" : [
                {
                    "rel": "self",
                    "href": "http://example.com/people/2"
                }
            ]
        }
    ],
    "links" : [
        {
            "rel": "self",
            "href": "http://example.com/people"
        }
    ]
}

Есть ли более простое решение для реализации HATEOAS для коллекций? Или я должен поцеловать HATEOAS на прощание за то, что заставил меня слишком усложнить структуру данных?

Ответы на вопрос(4)

Ваш ответ на вопрос