Представьте, что у вас есть 2 объекта, Игрок и Команда, где игроки могут быть в нескольких командах. В моей модели данных у меня есть таблица для каждого объекта и таблица соединений для поддержания отношений. Hibernate отлично справляется с этим, но как я могу разоблачить эти отношения в RESTful API?
Я могу придумать пару способов. Во-первых, у меня может быть каждый объект, содержащий список другого, поэтому у объекта Player будет список команд, к которому он принадлежит, и каждый объект команды имеет список принадлежащих ему Игроков. Поэтому, чтобы добавить игрока в команду, вы просто установите POST-представление игрока в конечную точку, что-то вроде POST /player
или POST /team
с соответствующим объектом в качестве полезной нагрузки запроса. Это кажется мне самым "RESTful", но кажется немного странным.
/api/team/0:
{
name: 'Boston Celtics',
logo: '/img/Celtics.png',
players: [
'/api/player/20',
'/api/player/5',
'/api/player/34'
]
}
/api/player/20:
{
pk: 20,
name: 'Ray Allen',
birth: '1975-07-20T02:00:00Z',
team: '/api/team/0'
}
Другим способом, я могу думать, чтобы сделать это, было бы разоблачить отношения как ресурс в своем собственном праве. Итак, чтобы просмотреть список всех игроков в данной команде, вы можете сделать GET /playerteam/team/{id}
или что-то в этом роде и вернуть список объектов PlayerTeam. Чтобы добавить игрока в команду, POST /playerteam
с соответствующим образом созданным объектом PlayerTeam в качестве полезной нагрузки.
/api/team/0:
{
name: 'Boston Celtics',
logo: '/img/Celtics.png'
}
/api/player/20:
{
pk: 20,
name: 'Ray Allen',
birth: '1975-07-20T02:00:00Z',
team: '/api/team/0'
}
/api/player/team/0/:
[
'/api/player/20',
'/api/player/5',
'/api/player/34'
]
Какова наилучшая практика для этого?