Представьте, что у вас есть 2 объекта, Player и Team , где игроки могут быть в нескольких командах. В моей модели данных у меня есть таблица для каждой сущности и таблица соединений для поддержания отношений. Hibernate прекрасно справляется с этим, но как я могу раскрыть эту взаимосвязь в RESTful API?
Я могу придумать пару способов. Во-первых, я могу сделать так, чтобы каждая сущность содержала список других, поэтому у объекта Player будет список команд, которым он принадлежит, а у каждого объекта Team будет список принадлежащих ему игроков. Итак, чтобы добавить игрока в команду, вы должны просто отправить представление игрока в конечную точку, например, 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'
]
Что для этого лучше всего?