플레이어가 여러 팀에있을 수있는 두 개의 엔티티 ( Player 및 Team) 가 있다고 가정하십시오 . 내 데이터 모델에는 각 엔터티에 대한 테이블과 관계를 유지하기위한 조인 테이블이 있습니다. Hibernate는 이것을 잘 처리하지만 RESTful API에서 어떻게이 관계를 노출시킬 수 있습니까?
몇 가지 방법을 생각할 수 있습니다. 먼저 각 엔터티에 다른 엔터티의 목록이 포함되어있을 수 있으므로 Player 객체에는 소속 된 팀 목록이 있고 각 Team 객체에는 소속 된 플레이어 목록이 있습니다. 따라서 플레이어를 팀에 추가하려면 플레이어의 표현을 요청의 페이로드로 적절한 객체를 사용하여 POST /player
또는 POST /team
와 같은 엔드 포인트에 POST 하면됩니다. 이것은 나에게 가장 "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 엔티티 목록을 다시 가져올 수 있습니다. 팀에 플레이어를 추가하려면 /playerteam
적절하게 빌드 된 PlayerTeam 엔티티를 페이로드로 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'
]
가장 좋은 방법은 무엇입니까?