Des exemples des meilleurs SOAP/REST/RPC Api web? Et pourquoi tu les aimes? Et ce qui ne va pas avec eux?
Dans mon entreprise nous partons en direction de la dans web Api pour accéder et mettre à jour nos données; d'abord, pour les partenaires, mais probablement au public à l'avenir. Au moment où le moyen de l'API va chercher (par exemple, SOAP, REST, RPC) est complètement ouvert et que nous n'avons pas toutes les décisions, de sorte que je suis intéressé dans les deux exemples de web Api pense que les gens sont bons, et pourquoi vous pensez que.
Ce que je suis intéressé par des avis de personnes utilisant des langues différentes (nous sommes susceptibles d'offrir de l'API pour les personnes utilisant un certain nombre de plates-formes, notamment .NET, Java, ActionScript et JavaScript) sur web Api que vous pensez sont de bons exemples, et que vous avez eu de bonnes expériences avec.
Certains points que je voudrais couvrir:
-
Vous préférez le SAVON type de services ou de REPOS/RPC ceux de style? Je soupçonne que les gens avec plate-forme de soutien (par exemple .NET, Java) préfère le SAVON et les personnes utilisant les langues sans support de plate-forme préfère les autres, mais je tiens à valider cette hypothèse.
-
Faire vous vous souciez de savoir si une API est en fait Reposante ou si c'est un simple vieux type RPC HTTP GET/POST? Si oui, pourquoi s'en faire? Est-il plus important qu'une API décrit lui-même correctement (c'est à dire ne pas la prétention d'être Reposante si c'est de type RPC) que de savoir si c'est réellement l'un des deux?
-
Nous avons besoin de vérifier qui est de l'utilisation du service. J'ai été à la recherche à la Amazon S3 authentification qui utilise un identificateur public et privé jeton qui est utilisé pour hacher les paramètres de la requête en vérification de jeton (c'est également semblable à flickr). Avez-vous utilisé ce type d'authentification avant, et comment avez-vous commencer? Existe-il des algorithmes de hachage vous trouvez un problème (c'est à dire pas pris en charge par votre plate-forme)? Préférez-vous envoyer la valeur de hachage dans un en-tête HTTP ou dans l'URI?
-
Comment doit-gestion des versions-ils être gérés? Est-ce une bonne idée d'avoir un
/v1/
type de sous-répertoire, afin que les futures versions peuvent être ajoutés à côté, ou voulez-vous faire quelque chose de différent, comme la version à la demande de la charge utile ou de la requête? Combien de temps vous attendez-vous à une version de l'API que tu avais construit contre pour être pris en charge pour l' (c'est à dire si la v2 a été introduite, quel serait votre espérance autour de la durée de vie de la v1).
Aussi, toutes les autres opinions et de points de couverture serait utile.
Je suis délibérément de rester vague sur le type réel de l'API, nous mettons en œuvre, comme je suis à la recherche d'une orientation générale en termes de ce que les gens pensent sont bonnes Api et les mécanismes de mise en œuvre, donc, ce post et ses réponses seront utiles à plus de gens dans l'avenir.
Remarque: j'ai cherché et ne peut pas trouver une question générique - ils tous semblent spécifiques à un certain type d'API - mais si c'est un doublon alors s'il vous plaît laissez-moi savoir. Aussi, si il devrait être de la communauté wiki (je pense que les gens devraient obtenir du crédit pour les réponses, donc je n'ai pas fait un seul) alors s'il vous plaît laissez-moi savoir et je vais le changer.
- "Préférez-vous le SAVON type de services ou de REPOS/RPC style" devrait être "préférez-vous le SAVON/RPC type de services ou de REPOS ceux de style". Le SAVON est un exemple de la RPC concept XML sur HTTP. Le REPOS est bien plus subtile d'un concept.
- Ne vois vraiment pas ce qui n'est pas constructif dans ce post. Comme question de fait, il est très utile pour moi aujourd'hui.Cela ne devrait pas avoir été fermé
Vous devez vous connecter pour publier un commentaire.
Voici mon point de vue.
Bien que venant de Java point de vue, je préfère le REPOS. Enveloppe SOAP avec plusieurs espaces de noms et de sa structure complexe est l'abomination. Il essaie de résoudre la plupart imaginaire des problèmes, et de ne pas résoudre quoi que ce soit de manière efficace. Seule chose à propos de SAVON que j'ai trouvé utile, c'est qu'il a des normes pour l'autorisation et les erreurs. D'autre part, les deux pourrait être résolu beaucoup plus facilement, y compris les quatre attributs standard dans la racine de l'élément XML - nom d'utilisateur, mot de passe, code d'erreur, errorDescription.
Bonne description de l'API et de la documentation est en effet tout ce qui compte. Différence entre le REPOS et le SAVON de maturité cadre est la plupart du temps en quelques lignes de configuration.
Pour le SAVON, envoyer de hachage dans le cadre de SAVON de sécurité; pour le RESTE, j'aime package tout en charge et d'éviter les en-têtes HTTP pour l'authentification. Je n'ai que des raisons subjectives, mais, depuis, j'ai eu à la bataille avec des cadres qui ne sont pas facilement exposer des en-têtes HTTP.
Ma préférence personnelle est d'avoir différents Uri pour les différentes versions du protocole. Dans mon expérience, cela vous donne plus de flexibilité dans les versions plus récentes, et les anciens clients qui se connectent à la version non prise en charge d'un protocole d'arrêter le travail immédiatement et pour des raisons évidentes. Aussi, parfois, vous pouvez carte ancienne version de l'application à la vieille URI, pour éviter d'avoir hérité de code dans la nouvelle version du serveur.
Comme pour combien de temps vous supporter les anciennes version de protocole... idéalement, aussi longtemps que vous avez des clients qui l'utilisent. C'est plus les entreprises que la décision technique. Vous devez prendre en charge au moins une précédente version du protocole. C'est généralement dans votre intérêt de pousser les clients vers la nouvelle version à la baisse des legs frais de soutien; à partir de la clients côté, la nouvelle version devrait signifier de nouvelles fonctionnalités, une meilleure protocole, et certains de tri de l'entreprise supplémentaire d'incitation (si les nouvelles fonctionnalités ne sont pas assez).
Vous pourriez être intéressé par Joshua Bloch présentation "Comment Concevoir une Bonne API et Pourquoi c'est important". Joshua Bloch est l'auteur de "Effective Java" et un Ingénieur Logiciel Principal et Chef de la Architecte Java chez Google.
Résumé: http://portal.acm.org/citation.cfm?id=1176622
Diapositives: http://lcsd05.cs.tamu.edu/slides/keynote.pdf
Vidéo: http://www.youtube.com/watch?v=aAb7hSCtvGw
Le contrôle de version pour le REPOS de l'aide-têtes Content-Type est bien ici:
http://barelyenough.org/blog/2008/05/versioning-rest-web-services/
La RPC approche est également une bonne option. Il réduit les frais généraux, et des projets comme de la Glace,Google Protocol Buffers et Apache Épargne, il est plus facile de développer les services RPC plus facile.
Si vous n'avez pas à fournir une API basée sur le web, puis RPC peut aussi être un choix que vous voulez explorer.
J'aimerais voir ce qu'Amazon est en train de faire - http://aws.amazon.com/ - les mecs qui font de l'argent sur ce genre de choses obviouslly aura appris plus de leçons que n'importe qui d'autre.
D'autres API, je regarderais - salesforce.com et Microsoft CRM api a été plutôt intéressant. Twitter a une bataille impitoyable api REST trop.
À mon humble avis, tout dépend de quel type d'applications que vous offrez. Si vous êtes importants, de grandes transactions en temps, alors certainement aller avec du SAVON (WS "étoile de la mort", comme ils les appellent). Mais si vous êtes offrant des applications de réseaux sociaux, puis aller avec le RESTE, car il est plus simple et un meilleur ajustement pour le public de piratage.
RESTE, si c'est fait correctement, il est facile à comprendre (modèles HTTP), simple (orientées vers les ressources) et peut être analysé par quasiment tous les langages de programmation (XML).
Si vous ne pouvez pas faire votre esprit pour finalement vous pourriez mettre en œuvre toutes. Dans ces cas, il est utile de regarder comment d'autres l'ont fait. Je vous recommande d'Ouvrir la Source XML, Base de données Native existe que propose trois types d'interfaces vous intestigating.