Ne vous inquiétez pas trop si votre initiale de l'API est entièrement Reposante ou pas (spécialement quand vous êtes juste dans l'alpha étapes). Obtenir le back-end de plomberie à travailler d'abord. Vous pouvez toujours faire une sorte de URL de la transformation/ré-écriture de la carte les choses, de raffinage de manière itérative jusqu'à ce que vous obtenez quelque chose de stable assez généralisée d'essais ("bêta").
Vous pouvez définir les Uri dont les paramètres sont codés par la position et la convention sur l'Uri eux-mêmes, préfixé par un chemin, vous savez que vous aurez toujours une carte à quelque chose. Je ne connais pas PHP, mais je suppose qu'une telle structure existe (comme cela existe dans d'autres langues avec les frameworks web):
.c'est à dire. Faire un "utilisateur" type de recherche avec les param[i]=valeur[i] pour i=1..4 sur le magasin n ° 1:
1) GET /store1/search/user/value1,value2,value3,value4
ou
2) GET /store1/search/user,value1,value2,value3,value4
ou comme suit (même si je ne le recommanderais pas, plus sur cela plus tard)
3) GET /search/store1,user,value1,value2,value3,value4
Avec l'option 1, vous avez une carte de tous les Uri avec le préfixe /store1/search/user
à la recherche de gestionnaire (ou quel que soit le PHP désignation) à défaut, de faire des recherches pour les ressources sous store1 (équivalent à /search?location=store1&type=user
.
Par convention documenté et appliqué par l'API, des valeurs de paramètres 1 à 4 sont séparés par des virgules, et présentés dans l'ordre. Mauvais paramètre positions provoquera une erreur ou un comportement indéfini.
Option 2 ajoute le type de recherche (dans ce cas - user
) comme paramètre de position #1. L'option est juste un choix de cosmétiques.
L'Option 3 est également possible, mais je ne pense pas que je le voudrais. Je pense que la capacité de la recherche à l'intérieur de certaines ressources doivent être présentés dans l'URI de lui-même, avant la recherche en elle-même (comme si en indiquant clairement dans l'URI que la recherche est spécifique au sein de la ressource.)
L'avantage de ce passage de paramètres de l'URI est que la recherche est une partie de l'URI (ainsi le traitement d'une recherche, une ressource, une ressource dont le contenu peut - et va - changer au fil du temps.) Le dissadvantage est que l'ordre des paramètres est obligatoire.
Une fois que vous faites quelque chose comme cela, vous pouvez utiliser OBTENIR, et ce serait une ressource en lecture seule (puisque vous ne pouvez pas le POST ou PUT - il est mis à jour lorsque c'est d'OBTENIR ed). Il serait également une ressource qui vient seulement d'exister lorsqu'elle est invoquée.
On pourrait également ajouter de la sémantique par la mise en cache des résultats pour une période de temps ou avec une SUPPRESSION provoquant le cache est supprimé. Toutefois, cela pourrait aller à l'encontre de ce que les gens utilisent généralement SUPPRIMER (et parce que les gens généralement contrôler la mise en cache avec la mise en cache des en-têtes.)
La façon dont vous aller à ce sujet serait une décision de conception, mais ce serait la façon dont j'allais parler. Il n'est pas parfait, et je suis sûr qu'il y aura des cas où ce n'est pas la meilleure chose à faire (spécialement pour les très complexes critères de recherche).