Уявіть, що у вас є 2 особи, Player та Team , де гравці можуть бути в декількох командах. У своїй моделі даних я маю таблицю для кожної сутності та таблицю приєднання, щоб підтримувати відносини. Зимова сплячка чудово справляється з цим, але як я можу викрити ці відносини в API RESTful?
Я можу придумати кілька способів. По-перше, я можу, щоб кожне об'єднання містило список іншого, тому об’єкт Player мав би список команд, до яких він належить, і кожен об'єкт команди мав би список гравців, які належать до нього. Отже, щоб додати гравця до команди, ви просто розмістіть представлення гравця в кінцевій точці, щось на зразок 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'
]
Яка найкраща практика для цього?