Est-ce une bonne structure pour les URL REST?REST Emplacement de l'ID d'URL pour les ressources avec collections
En supposant:
GET /account <- get list of accounts
GET /account/1234 <- get account 1234
etc.
Si la ressource de compte a une collection que je veux à l'interface, est-ce une bonne idée?
GET /account/1234/note <- get notes for account 1234
POST /account/1234/note <- add note to account 1234
DELETE /account/1234/note/321 <- delete note 321 on account 1234
Surtout que le dernier me donne une pause; En général, je n'aurais pas besoin à la fois de l'identifiant de l'entité et de l'identifiant parent lors de la suppression.
Ou peut-être que quelque chose comme ça serait mieux?
GET /account-note/1234 <- get notes for account 1234
POST /account-note/1234 <- add note to account 1234
DELETE /account-note/321 <- delete note 321 on account 1234 (b/c note 321 is on account 1234)
Mais alors je me retrouverais avec un jeu d'URL assez peu profond.
Merci
Désolé je ne suis pas d'accord. Outre les bons points soulevés par @Ben, votre deuxième moyen force le client à analyser la sortie d'une requête de compte avant que le client puisse accéder aux notes. D'où le double de la latence. – RayLuo
C'est un principe de HATEOAS, que la réponse d'une opération RESTful renvoie les URL des opérations supportées sur la ressource. Il existe de nombreuses façons de fournir les URL, soit en utilisant un protocole propriétaire (qui n'est pas si utile à mon humble avis) ou un format défini comme Hypermtext Application Language (HAL). Il n'y a vraiment aucune raison de s'inquiéter de l'analyse du client - le travail effectué sur le client va bien sûr à l'échelle 1: 1 lorsque les clients sont ajoutés, et lire une URL ne demande pas beaucoup de travail et la bande passante supplémentaire est un petit prix à payer avantages [suite] – Paul
Il est difficile de faire cela de la bonne manière, car peu (aucun?) des frameworks supportent quelque chose comme HAL. Aussi REST est juste un outil, c'est juste une façon de faire les choses, si vous avez un cas où REST comporte de faibles avantages (un exemple qui saute aux yeux serait un scénario où vous possédez à la fois client et serveur, le ratio de les clients vers les serveurs sont faibles, et le débit est très important - et peut-être que vous utilisez des services cellulaires ou quelque chose de coûteux) vous êtes totalement libre d'implémenter n'importe quel type de protocole, sans respecter aucun principe RESTful. – Paul