Pour un SaaS de démarrage, je suis impliqué dans, je fais construire à la fois une web RESTful API et un couple de client applications sur différentes plates-formes qui la consomment. Je pense que j'ai l'API compris, mais maintenant je suis en se tournant vers les clients. Comme je l'ai lu à propos de RESTE, je vois qu'une partie essentielle de REPOS est découverte, mais il semble y avoir beaucoup de débat entre deux interprétations différentes de ce que la découverte signifie vraiment:
Développeur découverte: Le développeur dur-codes et abondamment à l'API de détails dans le client, tels que les ressources d'URI, des paramètres de requête pris en charge les méthodes HTTP, et d'autres détails qu'ils ont découvert par le biais de la navigation sur les docs et d'expérimenter avec l'API de réponses. Ce genre de découverte, à mon humble avis nécessite cool de liaison et de l'API de gestion des versions de la question, et entraîne dur de couplage de code client de l'API. Pas beaucoup mieux que si vous utilisez un bien documentée de la collection de la RPC, il me semble.
Exécution de la découverte - Le client de l'application elle-même est en mesure de comprendre tout ce qu'il faut avec peu ou pas de out-of-band de l'information (sans doute, qu'une connaissance des types de médias de l'API.) Des liens peuvent être chaudes. Mais pour faire de l'API très efficace, beaucoup de lien de template pour les paramètres de la requête semble être nécessaire, ce qui rend out-of-band info insinuer dans. Il y a peut-être d'autres difficultés, je n'ai pas encore pensé, puisque je n'ai pas eu à ce point dans le développement. Mais j'aime l'idée du couplage lâche.
Exécution de la découverte semble être le saint graal de REPOS, mais je vois peu de discussion sur la façon de mettre en œuvre un tel client. Presque tout le RESTE des sources que j'ai trouvé semble supposer Développeur de découverte. Quelqu'un sait de certains d'Exécution de découverte de ressources? Les meilleures pratiques? Des exemples ou des bibliothèques de code réel? Je travaille en PHP (Zend Framework) pour un client. Objective-C (iOS) pour les autres.
Est Runtime découverte d'un objectif réaliste, compte tenu de l'ensemble d'outils et de connaissances dans la communauté des développeurs? Je peux écrire mon client à traiter l'ensemble des URI de manière opaque, mais comment faire plus efficacement est une question, en particulier sur les connexions à bas débit. De toute façon, d'URI ne sont qu'une partie de l'équation. Ce lien à propos de template dans le contexte d'Exécution? Comment communiquer quelles sont les méthodes de prise en charge, en plus de faire beaucoup d'OPTIONS de demande?