Oyuncuların birden fazla takımda olabileceği Oyuncu ve Takım olmak üzere 2 kurumunuz olduğunu düşünün . Veri modelimde, her varlık için bir tablo ve ilişkileri korumak için bir birleştirme tablosu var. Hazırda bekletme durumu bu iş için uygundur, ancak bu ilişkiyi RESTful API'de nasıl gösterebilirim?
Birkaç yol düşünebilirim. İlk olarak, her bir varlığın diğerinin listesini içermesini sağlayabilirim, bu nedenle bir Player nesnesinin ait olduğu Takımların bir listesi olur ve her Team nesnesinin kendisine ait olan Oyuncuların bir listesi olur. Ekibe bir Oyuncu eklemek için, oyuncunun temsilini, bir isteğin yükü olarak uygun nesne ile POST /player
veya POST gibi bir bitiş noktasına POST edersiniz /team
. Bu benim için en "RESTful" gibi görünüyor ama biraz garip geliyor.
/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'
}
Bunu yapmanın başka bir yolu da ilişkiyi kendi başına bir kaynak olarak ortaya koymak olacaktır. Dolayısıyla, belirli bir takımdaki tüm oyuncuların bir listesini görmek için bir GET /playerteam/team/{id}
veya benzeri bir şey yapabilir ve PlayerTeam varlıklarının bir listesini geri alabilirsiniz. Bir takıma oyuncu eklemek için /playerteam
, yük olarak uygun şekilde oluşturulmuş bir PlayerTeam varlığına sahip POST .
/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'
]
Bunun için en iyi uygulama nedir?