Представьте, что у вас есть 2 объекта: игрок и команда , где игроки могут быть в нескольких командах. В моей модели данных у меня есть таблица для каждой сущности и таблица соединений для поддержания отношений. Hibernate прекрасно справляется с этим, но как я могу представить эти отношения в RESTful API?
Я могу придумать пару способов. Во-первых, у меня может быть каждый объект, содержащий список другого, поэтому у объекта Player будет список Команд, к которым он принадлежит, и у каждого объекта Team будет список игроков, которые ему принадлежат. Таким образом, чтобы добавить игрока в команду, вы просто поместите представление игрока в конечную точку, что-то вроде POST /player
или POST /team
с соответствующим объектом в качестве полезной нагрузки запроса. Это кажется мне самым «ОТЛИЧНЫМ», но кажется немного странным.
/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'
]
Какова лучшая практика для этого?