2016-06-06 1 views
2

Je travaille pour la section annonce de mon organisation où je dois chercher les villes disponibles pour cette section. Les villes classées sont le sous-ensemble des villes. Donc, pour aller chercher les villes, j'ai créé le chemin d'accès API suivant.Décider API REST Convention Path

api/classified/cities 

Puis je me rends compte depuis les villes classées sont le sous-ensemble des villes de l'URL peut être

api/cities/classifiedcities 

dont l'un du chemin ci-dessus dois-je utiliser selon les principes REST?

+0

double possible de http://stackoverflow.com/questions/35338868/which-naming-pattern-should-i-use-for-basic-crud/35339010#35339010 –

Répondre

2

Si vous visez des principes REST, REST ne pas vraiment avoir de principes comment un URI pourrait ressembler (aussi longtemps qu'il identifie un « réel " Ressource!). It does however say qu'il devrait être lié au lieu de hardcoded dans les clients. C'est pourquoi les URI some people say n'ont pas d'importance. Ils n'ont pas d'importance parce que les clients devraient "découvrir" les URI au lieu de les connaître au préalable.

Alors, pourquoi ne pas tous les ramasser comme URIs "/ 45ttfdfg/34tkfjdldf23wedkdfjsd"? Cela dépend encore une fois de vos préférences personnelles. C'est bien si l'URI est "lisible" par les humains. Il y a des outils (mal écrits) qui supposent une certaine structure. Il y a des bibliothèques "REST" (serveur et client) qui supposent aussi beaucoup de choses, par exemple le concept de "subresources" (qui ne vient pas non plus de REST).

Pour résumer: Si vous suivez REST (! Vous n'avez pas bien sûr), alors les clients devraient découvrir URIs. Si tel est le cas, alors il s'agit de préférences personnelles et peut-être de certaines restrictions techniques avec les bibliothèques/clients. Alors choisissez celui que vous préférez, ne vous inquiétez pas à ce sujet! Ils peuvent être modifiés plus tard si nécessaire de toute façon, puisque le serveur a le contrôle sur ses URI.

1

En théorie, le sous-ensemble doit suivre l'ensemble des parents (donc la première solution ne semble pas trop bien).

Une troisième approche serait par le biais des paramètres de la requête:

api/cities?type=classified