Welche Richtlinien und Best Practices kann ich beim Entwerfen einer API beachten? Auf das absolute Minimum, ich weiß, dass eine API einfach zu bedienen und flexibel sein sollte. Leider können diese Begriffe eher subjektiv sein, daher suchte ich nach konkreten Richtlinien für gutes API-Design.Best Practices und Richtlinien zum Entwerfen einer API
Antwort
Ich fand die folgenden sein eine Uhr wert Joshua Bloch - How To Design A Good API and Why it Matters
Die Beispiele sind zwar in Java, aber immer noch können Sie Parallelen ziehen. Da du eine bestimmte Technologie nicht erwähnt hast; Ich nehme an, Sie wollen keine Nischenlösungen.
[Gleiches Video mit höherer Auflösung (YouTube)] (http://www.youtube.com/watch?v=heh4OeB9A-c) –
[REST API-Architektur - Best Practices] (http://dasunhegoda.com/rest- api-architecture-best-practices/1049 /) – Techie
Es gibt eine good presentation zu diesem Thema von Joshua Bloch. Die Präsentation verwendet Java, aber die Ideen sind sprachunabhängig. Another source (pdf) für einen schnellen Überblick.
Ich denke, Ihre Frage wird in dieser Menge an Speicherplatz mit der Menge der Informationen, die Sie geben, nicht beantwortet werden. Ich habe einige Links zusammengestellt von Eingabe von 'api Design' in Google, und auf der ersten Seite diese erhalten, die ziemlich gut aussehen
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
Dies ist ein Link von Microsoft: http://msdn.microsoft.com/en-us/library/ms229042.aspx
Es gibt auch dieses Buch: Framework Design Guidelines: Conventions, Idiome und Muster für wiederverwendbare .NET-Bibliotheken
Danke, dass du das gebracht hast ... könnte aber durchaus .net centric sein. – Gishu
Als jemand, der Tonnen zu konsumieren hat von APIs ...
Bitte schreiben Sie Ihre API in einer konsistenten Art und Weise:
Konsequente Benennung innerhalb der API selbst. Verwenden Sie Verben, Substantive, Schlüsselwörter in genau dem gleichen Stil.
In Übereinstimmung mit der Zielumgebung wird es verwendet werden. Wenn .NET, dann konsultieren Sie Microsofts Benennungsrichtlinien.
Konsequente Konzepte. Fabrikmuster? Erbauermuster? Statische Methoden? Schnittstellen? Wählen Sie einfach einen aus und bleiben Sie dabei. JA WIRKLICH. Es gibt keine kleine Ausnahme von der Regel. Es wird als großer wunde Daumen hervorstehen. Mehr als 1 Ausnahme? Deine API ist mehr und mehr amateurhaft.
Hier ist noch eins: Spezifität.
Basisklassen, die ich implementieren kann, wenn Sie sie bereitstellen möchten, sollten wenige und klar definierte Funktionen implementieren. Sag mir nicht "GetData()" gibt ein "object []" zurück und erwartet dann, dass ich es implementiere, finde heraus, warum ich es in einen String [] umwandeln muss, und debugge dann, warum es 20 Mal aufgerufen wird. Es ist viel besser, DataPoint [] GetChartData(), string [] GetLabelData(), etc. und lassen Sie mich wählen, welche ich implementieren sollte.
Bitte nicht albern-lange mit Namen: PostRenderColorWheelModifyHSVBaseHandler. Sie können oft sehr spezifische Dinge in einen allgemeineren Namen + Parameter umgestalten.
String-Parameter sind ein No-No! Verwenden Sie Aufzählungen. Ich möchte keinen Handler wie
PostRenderHandler verwenden ("ColorWheel", "HSV", einigeDelegate);
Ich würde viel eher wie ein Enum kann ich untersuchen:
PostRenderHandler(ModuleType.ColorWheel, Options.ColorWheelHSV, someDelegate);
Man, ich könnte weitermachen ... Power zu diesem Kerl Josh Bloch - gut geschriebene APIs kann wirklich genial ... schlechte können sehr schmerzhaft sein.
Vielen Dank für Ihr Feedback! Ja, der Joshua Bloch ist großartig. Ich bin überhaupt nicht überrascht, dass sein Name auftaucht. Ich glaube, er hat das Effektive Java-Buch geschrieben. –
Ja, er ist der Autor. Das Buch ist sehr, sehr gut. Diese Regeln und Empfehlungen scheinen der erste Teil von "Clean code" zu sein. – Bakudan
- 1. Best Practices zum Entwerfen von Tastenkombinationen
- 2. Richtlinien und Best Practices zur Erstellung einer proxyfreundlichen Website
- 3. Best Practices zum Entwerfen der Tabellenansicht für App-Einstellungen?
- 4. Welche Best Practices zum Entwerfen einer RESTful öffentlichen API auf Rails?
- 5. Wpf Animation Best Practices
- 6. Jira Konventionen und Best Practices
- 7. php und mysql, Best Practices
- 8. Best Practices zum Speichern von UI-Einstellungen?
- 9. Best Practices zum Testen von MSI-Installationen
- 10. Codierrichtlinien + Best Practices?
- 11. Django- und Dateiberechtigungen: Best Practices?
- 12. NGen und Gacutil Best Practices
- 13. Bootstrap-Struktur und Best Practices
- 14. Best Practices für API-Hooks/-Rückrufe?
- 15. Best Practices zum Erstellen benutzerdefinierter Anspruchstypen
- 16. Entwerfen einer XACML-API
- 17. Best Practices zum Definieren eigener Ausnahmeklassen?
- 18. Best Practices zum Debuggen von Verknüpfungsfehlern
- 19. Best Practices zum Caching in ASP.NET-Apps
- 20. Best Practices zum Signieren von .NET-Assemblys?
- 21. Best Practices zum Speichern von geheimen Schlüsseln
- 22. Welche Best Practices gelten für die Stammseite einer REST-API?
- 23. Best Practices zum Speichern von Einstellungen
- 24. Best Practices zum Erstellen einer Seite, die ganzseitig zoomt?
- 25. CoreData Best Practices
- 26. Best Practices zum Schreiben von JavaScript-Widgets
- 27. Best Practices zum automatischen Speichern von Entwürfen?
- 28. Best Practices zum Hinzufügen von Semantik zu einer Website
- 29. Was sind Tools und Best Practices zum Testen von Webdiensten?
- 30. klare Richtlinien und Best Practices für die gemeinsame Verwendung von JQuery und ASP.NET MVC?
Welche Sprache/Plattform? C#? C++? Java? SEIFE? SICH AUSRUHEN? – bobbymcr
Hier muss es Internetquellen geben ... zum Beispiel http://chaos.troll.no/~shausman/api-design/api-design.pdf – WhirlWind
+1 Schöne Frage. Ich bin verärgert über "Frameworks", die Ihr Anwendungsdesign einschränken/nicht intuitiv sind. – Gishu