J'ai une hiérarchie d'objets j'ai besoin de dénoncer à travers une API RESTful et je ne suis pas sûr de savoir comment mon Url doit être structurée et ce qu'ils doivent revenir. Je ne pouvais pas trouver toutes les meilleures pratiques.
Disons que j'ai des Chiens et des Chats héritant de Animaux. J'ai besoin d'opérations CRUD sur les chiens et les chats; je veux aussi être capable de faire des opérations sur les animaux en général.
Ma première idée était de faire quelque chose comme ceci:
GET /animals # get all animals
POST /animals # create a dog or cat
GET /animals/123 # get animal 123
Le truc, c'est que la /les animaux de la collection est maintenant "incohérent", comme on peut le retourner et prendre des objets qui n'ont pas exactement la même structure (chiens et chats). Est-ce considéré comme de "repos" pour avoir une collection de retourner les objets ont des attributs différents?
Une autre solution serait de créer une URL pour chaque type de béton, comme ceci:
GET /dogs # get all dogs
POST /dogs # create a dog
GET /dogs/123 # get dog 123
GET /cats # get all cats
POST /cats # create a cat
GET /cats/123 # get cat 123
Mais maintenant, la relation entre les chiens et les chats est perdu. Si l'on souhaite récupérer tous les animaux, le chien et le chat les ressources doivent être interrogés. Le nombre d'Url va également augmenter avec chaque nouvel animal de sous-type.
Une autre suggestion consistait à accroître la deuxième solution en ajoutant ceci:
GET /animals # get common attributes of all animals
Dans ce cas, les animaux de renvoyer uniquement contenir des attributs communs à tous les animaux, à l'abandon de chien spécifique et chat-des attributs particuliers. Cela permet de récupérer tous les animaux, bien qu'avec moins de détails. Chaque objet retourné pourrait contenir un lien vers les détails, version concrète.
Des commentaires ou des suggestions?