Quelles sont les lignes directrices et les meilleures pratiques que je peux respecter lors de la conception d'une API? Au strict minimum, je sais qu'une API devrait être facile à utiliser et flexible. Malheureusement, ces termes peuvent être plutôt subjectifs, donc je cherchais des lignes directrices concrètes concernant la conception d'un API.Les meilleures pratiques et lignes directrices pour la conception d'une API
Répondre
J'ai trouvé ce qui suit pour être vaut une montre Joshua Bloch - How To Design A Good API and Why it Matters
Les exemples sont en Java bien que vous puissiez toujours faire des parallèles. Puisque vous n'avez pas mentionné une technologie spécifique; Je suppose que vous ne voulez pas de solutions de niche.
[Même vidéo à une résolution supérieure (YouTube)] (http://www.youtube.com/watch?v=heh4OeB9A-c) –
[Architecture API REST - Meilleures pratiques] (http://dasunhegoda.com/rest- api-architecture-best-practices/1049 /) – Techie
Il y a un good presentation sur ce sujet de Joshua Bloch. La présentation utilise Java mais les idées sont indépendantes de la langue. Another source (pdf) pour un aperçu rapide.
Je pense que votre question ne sera pas répondu à cette quantité d'espace avec la quantité d'information que vous donnez. J'ai mis plusieurs liens de taper « design api » dans google, et sur la première page obtenir ces derniers qui semblent très bon
http://web.archive.org/web/20151229055009/http://lcsd05.cs.tamu.edu/slides/keynote.pdf
http://web.archive.org/web/20090520234149/http://chaos.troll.no/~shausman/api-design/api-design.pdf
Ceci est un lien de Microsoft: http://msdn.microsoft.com/en-us/library/ms229042.aspx
Il y a aussi ce livre: Framework Design Guidelines: Conventions, locutions et modèles réutilisables pour les bibliothèques .NET
Merci d'avoir soulevé cela ... peut-être tout à fait. Net centré cependant. – Gishu
Comme quelqu'un qui a consommer des tonnes des API ...
S'il vous plaît écrire votre API de manière cohérente:
Désignation cohérente dans l'API elle-même. Utilisez des verbes, des noms, des mots-clés dans exactement le même style.
Conformément à l'environnement cible, il sera utilisé. Si .NET, puis consultez les directives de nommage de Microsoft.
concepts cohérents. Modèle d'usine? Modèle Builder Méthodes statiques? Interfaces? Choisissez-en un et respectez-le. VRAIMENT. Il n'y a pas de petite exception à la règle. Il va sortir comme un gros pouce endolori. Plus d'une exception? Votre API est de plus en plus amateur.
En voici une autre: Spécificité.
Les classes de base que je peux mettre en œuvre, si vous choisissez de les fournir, devraient avoir des fonctions peu et bien définies pour mettre en œuvre. Ne me dites pas "GetData()" renvoie un "object []" et attendez que je l'implémente, comprenez pourquoi je dois le convertir en une chaîne [], puis déboguez pourquoi il est appelé 20 fois. Il est préférable d'avoir DataPoint [] GetChartData(), string [] GetLabelData(), etc. et laissez-moi choisir ceux que je devrais implémenter.
S'il vous plaît ne soyez pas stupide avec des noms: PostRenderColorWheelModifyHSVBaseHandler. Vous pouvez souvent refactoriser des choses super spécifiques en un nom plus générique + paramètres.
Les paramètres de chaîne sont un non-non! Utilisez les énumérations. Je ne veux pas utiliser un gestionnaire comme
PostRenderHandler ("ColorWheel", "HSV", someDelegate);
Je préfère comme un ENUM je peux étudier:
PostRenderHandler(ModuleType.ColorWheel, Options.ColorWheelHSV, someDelegate);
Man, je pourrais continuer ... Le pouvoir de ce type Josh Bloch - API bien écrit peut être vraiment génial ... les mauvais peuvent être vraiment douloureux.
Merci pour vos commentaires! Ouais, le gars de Joshua Bloch est génial. Je ne suis pas du tout surpris de voir son nom apparaître. Je crois qu'il a écrit le livre de Java efficace. –
Oui, il est l'auteur. Le livre est très, très bien. Ces règles et recommandations semblent être la première partie du "code propre". – Bakudan
- 1. Lignes directrices/principes pour la conception d'emballages et de composants
- 2. DB Conception: les meilleures pratiques à la structure hiérarchique
- 3. Lignes directrices UI de conception d'Android - où se trouve?
- 4. Meilleures pratiques Android Meilleures pratiques
- 5. cadre meilleures pratiques zend + FACEBOOK Api
- 6. à l'aide de lignes directrices pour les génériques et IDisposable
- 7. Les meilleures pratiques pour les requêtes et de service WCF
- 8. Principes de conception, meilleures pratiques et modèles de conception pour C (ou programmation procédurale en général)?
- 9. Bonnes pratiques et modèles de conception pour les formulaires iPhone?
- 10. Lignes directrices pour la conception de classes pour l'injection de dépendances
- 11. Meilleures pratiques BDD pour la conception de scénarios de concombre pour les formulaires
- 12. Meilleures pratiques pour une API en PHP: fonctions, ou classes?
- 13. asp.net fournisseur de l'appartenance api. convivialité. les meilleures pratiques
- 14. Conférences et formation pour les architectes, les meilleures pratiques,
- 15. Meilleures pratiques pour Entity Framework et ASP.NET
- 16. Lignes directrices de DotNetNuke et Subversion
- 17. Meilleures pratiques pour les singletons et les notifications sur l'iPhone
- 18. Les meilleures pratiques pour ma solution
- 19. Meilleures pratiques pour les références JavaScript IntelliSense
- 20. Lignes directrices pour la conception de protocoles de communication compatibles avant?
- 21. HTML Traverse et trouver les meilleures pratiques
- 22. Flex workflow et meilleures pratiques
- 23. Meilleures pratiques pour les chaînes de connexion
- 24. Meilleures pratiques pour les traites d'enregistrement automatique?
- 25. CSS meilleures pratiques pour les portlets
- 26. Meilleures pratiques pour les comptes non enregistrables
- 27. Les meilleures pratiques pour la redirection http pour Windows Azure
- 28. php et mysql, meilleures pratiques
- 29. Meilleures pratiques pour REST Secret partagé Valeur
- 30. WinForms Ergonomie et meilleures pratiques
Quelle langue/plateforme? C#? C++? Java? SAVON? DU REPOS? – bobbymcr
Il doit y avoir des ressources internet sur ce ... par exemple http://chaos.troll.no/~shausman/api-design/api-design.pdf – WhirlWind
+1 Bonne question. Je suis ennuyé par les «frameworks» qui contraignent la conception de votre application/qui ne sont pas intuitifs. – Gishu