Estou projetando uma API REST pragmática e estou um pouco preocupado com a melhor forma de adicionar entidades existentes a uma coleção. Meu modelo de domínio inclui um projeto que possui uma coleção de sites. Esse é um relacionamento estrito de muitos para muitos e não preciso criar uma entidade que modele explicitamente o relacionamento (por exemplo, ProjectSite).
Minha API permitirá que os consumidores adicionem um site existente a um projeto. Onde estou me desligando é que os únicos dados que realmente preciso são ProjectId e SiteId. Minha ideia inicial foi:
1. POST myapi/projects/{projectId}/sites/{siteId}
Mas eu também pensei em
2. POST myapi/projects/{projectId}/sites
com uma entidade do site enviada como conteúdo JSON.
A opção 1 é simples e funciona, mas não parece muito certa, e eu tenho outros relacionamentos que não podem seguir esse padrão, portanto adiciona inconsistência à minha API.
A opção 2 parece melhor, mas leva a duas preocupações:
- Devo criar um site ou lançar uma exceção se um novo site for publicado (SiteId = 0)?
- Como eu só preciso do ProjectId e do SiteId para criar o relacionamento, o Site pode ser postado com dados ausentes ou incorretos para outras propriedades.
Uma terceira opção é fornecer um terminal simples apenas para criar e excluir o relacionamento. Esse terminal esperaria uma carga útil JSON contendo apenas ProjectId e SiteId.
O que você acha?