¿Cuáles son algunas pautas y mejores prácticas que puedo cumplir al diseñar una API? Como mínimo, sé que una API debe ser fácil de usar y flexible. Lamentablemente, esos términos pueden ser bastante subjetivos, por lo que estaba buscando algunas pautas concretas relacionadas con un buen diseño de API.Mejores prácticas y pautas para diseñar una API
Respuesta
He encontrado que los siguientes vale la pena mirar Joshua Bloch - How To Design A Good API and Why it Matters
Los ejemplos están en Java, pero aún se pueden trazar paralelismos. Ya que no mencionaste una tecnología específica; Supongo que no quieres soluciones de nicho.
[Mismo video a mayor resolución (YouTube)] (http://www.youtube.com/watch?v=heh4OeB9A-c) –
[REST API Architecture - Best Practices] (http://dasunhegoda.com/rest- api-architecture-best-practices/1049 /) – Techie
Hay un good presentation sobre este tema de Joshua Bloch. La presentación usa Java pero las ideas son independientes del lenguaje. Another source (pdf) para una visión general rápida.
Creo que su pregunta no recibirá respuesta en este espacio con la cantidad de información que está dando. He puesto varios enlaces desde escribiendo 'diseño de API' en Google, y en la primera página conseguir estos que se ven bastante bien
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
Este es un enlace de Microsoft: http://msdn.microsoft.com/en-us/library/ms229042.aspx
También existe este libro: marco Directrices de diseño: Convenciones, modismos y Patrones para .NET reutilizables Bibliotecas
Gracias por mencionarlo ... aunque podría ser bastante .net céntrico. – Gishu
Como alguien que tiene que consumir toneladas de APIs ...
por favor escriba su API de una manera consistente:
Nomenclatura constante dentro de la API. Use verbos, nombres, palabras clave EXACTAMENTE del mismo estilo.
De acuerdo con el entorno de destino, se usará en. Si .NET, consulte las pautas de nombres de Microsoft.
conceptos consistentes. Patrón de fábrica? Patrón de constructor? Métodos estáticos? Interfaces? Solo elija uno y quédese con él. DE VERDAD. No existe una excepción small a la regla. Se destacará como un gran pulgar dolorido. Más de 1 excepción? Tu API es cada vez más amateur.
Aquí hay otro: Especificidad.
Las clases base que pueda poner en práctica, si usted elige para proporcionar las mismas, debería tener pocos y bien definidas funciones para implementar. No me diga "GetData()" devuelve un "objeto []" y luego espera que lo implemente, descubra por qué tengo que convertirlo en una cadena [] y luego depurar por qué se lo llama 20 veces. Es mucho mejor tener DataPoint [] GetChartData(), string [] GetLabelData(), etc. y déjame elegir cuáles debo implementar.
No se haga tonto con los nombres: PostRenderColorWheelModifyHSVBaseHandler. A menudo puede refactorizar cosas súper específicas en un nombre más genérico + parámetros.
Los parámetros de cadena son un no-no! Use enumeraciones. No deseo utilizar un controlador como
PostRenderHandler ("ColorWheel", "HSV", someDelegate);
Yo más bien como una enumeración puedo investigar:
PostRenderHandler(ModuleType.ColorWheel, Options.ColorWheelHSV, someDelegate);
hombre, podría seguir ... Poder para ese tipo de Josh Bloch - APIs bien escrito puede ser realmente impresionante ... los malos pueden ser realmente dolorosos.
¡Gracias por tu respuesta! Sí, el chico de Joshua Bloch es increíble. No me sorprende en absoluto que aparezca su nombre. Creo que escribió el libro Effective Java. –
Sí, él es el autor. El libro es muy, muy bueno. Estas reglas y recomendaciones parecen la primera parte de "Código limpio". – Bakudan
- 1. Mejores prácticas para diseñar GUI en GWT
- 2. Mejores prácticas para diseñar atajos de teclado
- 3. ¿Mejores prácticas para API seguras?
- 4. ¿Cuáles son las mejores prácticas para diseñar una API pública RESTful en Rails?
- 5. Mejores prácticas para diseñar un sistema de permisos
- 6. ¿Cuáles son las mejores prácticas para diseñar esquemas XML?
- 7. Diseño API: mejores prácticas y compatibilidad con múltiples versiones
- 8. Guía de mejores prácticas: Swing
- 9. Mejores prácticas para C#
- 10. Mejores prácticas para la compatibilidad con versiones anteriores de API
- 11. Mejores prácticas para SQLite DB y ContentProvider
- 12. Mejores prácticas para usar y persistir enumeraciones
- 13. ¿Mejores prácticas para diseñar roles de usuario y sistema de permisos?
- 14. ¿Cómo diseñar una API pública en ASP.Net?
- 15. mejores prácticas para administrar y cargar propiedades
- 16. ¿Mejores prácticas para la API de procedimiento almacenado?
- 17. ¿Mejores prácticas para internacionalizar una aplicación Flex?
- 18. php y mysql, mejores prácticas
- 19. Convenciones y mejores prácticas Jira
- 20. Estándares jQuery y mejores prácticas
- 21. Mejores prácticas para la depuración
- 22. Mejores prácticas para almacenar configuraciones
- 23. Registro para ASP.NET - Mejores prácticas
- 24. Mejores prácticas de BDD para diseñar escenarios de pepino para los formularios
- 25. ¿Mejores prácticas para autoguardar borradores?
- 26. PHP Flush: frecuencia y mejores prácticas
- 27. Mejores prácticas para Magento Deployment
- 28. Mejores prácticas de LDAP Modeling
- 29. Mejores prácticas de Sitecore
- 30. Acceso a API con autenticación de dispositivo: ¿mejores prácticas?
¿Qué idioma/plataforma? DO#? C++? ¿Java? ¿JABÓN? ¿DESCANSO? – bobbymcr
Debe haber recursos de Internet sobre esto ... por ejemplo http://chaos.troll.no/~shausman/api-design/api-design.pdf – WhirlWind
+1 Buena pregunta. Me molestan los 'frameworks' que limitan el diseño de tu aplicación/no son intuitivos. – Gishu