Bayangkan Anda memiliki 2 entitas, Pemain dan Tim , di mana pemain dapat berada di beberapa tim. Dalam model data saya, saya memiliki tabel untuk setiap entitas, dan tabel gabungan untuk mempertahankan hubungan. Hibernate baik-baik saja dalam menangani hal ini, tetapi bagaimana saya bisa mengekspos hubungan ini dalam RESTful API?
Saya bisa memikirkan beberapa cara. Pertama, saya mungkin meminta setiap entitas berisi daftar yang lain, jadi objek Player akan memiliki daftar Tim miliknya, dan setiap objek Tim akan memiliki daftar Pemain yang menjadi miliknya. Jadi untuk menambahkan Pemain ke Tim, Anda hanya akan POST representasi pemain ke titik akhir, sesuatu seperti POST /player
atau POST /team
dengan objek yang sesuai sebagai muatan permintaan. Ini tampaknya yang paling "tenang" bagi saya tetapi terasa agak aneh.
/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'
}
Cara lain yang bisa saya pikirkan untuk melakukan ini adalah dengan mengekspos hubungan sebagai sumber daya dalam dirinya sendiri. Jadi untuk melihat daftar semua pemain di tim tertentu, Anda bisa melakukan GET /playerteam/team/{id}
atau sesuatu seperti itu dan mendapatkan kembali daftar entitas PlayerTeam. Untuk menambahkan pemain ke tim, POST /playerteam
dengan entitas PlayerTeam yang dibangun dengan tepat sebagai muatan.
/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'
]
Apa praktik terbaik untuk ini?