REST api mejores prácticas versión sin duplicar código

Estoy escribiendo un api por mi cuenta en Nodo para estudiar propósito y práctica. Estoy luchando por cómo debería implementar la versión.
Ejemplo:
Rutas desde v1

api/v1/products calls v1/ProductController
api/v1/clients calls v1/ClientController

Rutas desde v2 - Las únicas rutas con cambios (código)

api/v2/clients llamadas v2/ClientController

¿Cuál es la mejor práctica para manejar el comportamiento de v2 sin duplicar códigos de v1 a v2. Mi pensamiento/solución es:

api/v2/products - punto de confianza a - título 'v1/ProductController' o 'api/v1/products '

¿Es cierto?

Implementando así, puedo gestionar versiones predeterminadas para mi aplicación móvil. Ejemplo, la versión 2 de la aplicación móvil siempre usa api/v2. Y no hace falta apuntar a v1 o v2 dependiendo de la acción.

En términos de rendimiento, en Node, si registro todas las rutas de v1 también en v2, ¿podría usar más memoria o uso de cpu?

Pregunta hecha hace 3 años, 4 meses, 29 días - Por cyberjedi


3 Respuestas:

  • Si liberas la versión 2 de tu api y nada ha cambiado desde la versión 1 pero quieres que tu app de cliente use la última versión, tu backend debe simplemente pasar el endpoint al mismo código que la versión 1 está usando. Lo hago con Wirespec. Wirespec es un servicio en línea gratuito que le permite crear APIs y ofrecer respuestas en puntos finales personalizables. Soporta que defina múltiples versiones para un endpoints. Incluso puedes adjuntar varios puntos finales al mismo api, de la forma que has descrito. El servicio de generación de respuesta api de Wirespec funciona en Node.js.

    Visita https://wirespec.dev

    Puede jugar con este servicio para obtener una sensación de cómo puede crear puntos finales que soportan múltiples versiones. Lo que también es agradable es que puede filtrar sus A{PIs por números de versión.

    Respondida el Dec 18, 2020 a las 15:29 - por techmaestro

    Votos positivos: 0 | Votos negativos: 0

  • Para manejar la versión v2 de tu API sin duplicar código de la versión v1, puedes seguir algunas mejores prácticas en el diseño de tu API REST. Aquí tienes algunas sugerencias:

    • Separación de la lógica de negocio:
    - Utiliza la arquitectura MVC (Modelo-Vista-Controlador) para separar la lógica de negocio de tus controladores. Esto te permitirá reutilizar modelos y lógica de negocio común entre las distintas versiones.

    • Versionado en los controladores:
    - En lugar de duplicar el código en diferentes controladores para cada versión, puedes mantener un único controlador para cada recurso y gestionar la versión dentro del controlador. Por ejemplo, puedes agregar lógica condicional en el controlador para manejar las diferencias entre las versiones.

    • Routing dinámico:
    - Puedes implementar un enrutador dinámico que maneje las rutas de manera flexible según la versión solicitada. Esto te permitirá mantener un único punto de entrada para cada recurso y gestionar las versiones de manera dinámica.

    • Middleware de versionado:
    - Puedes crear middleware específico para manejar la versión de la API en las solicitudes entrantes. De esta manera, puedes establecer reglas de versionado en un solo lugar y reutilizar la lógica de versionado en diferentes partes de la aplicación.

    En cuanto a tu pregunta sobre registrar todas las rutas de v1 también en v2, en Node.js no deberías experimentar un aumento significativo en el uso de memoria o la CPU al hacerlo, ya que las rutas se gestionan de forma eficiente en el enrutador de Express (o cualquier otro middleware de enrutamiento que estés utilizando). Sin embargo, es importante tener en cuenta que registrar las mismas rutas en múltiples versiones puede complicar la gestión y mantenimiento a largo plazo.

    En resumen, para manejar versiones de API sin duplicar código, es recomendable seguir buenas prácticas de diseño de API y separar la lógica común de las diferencias entre versiones. Esto te permitirá mantener un código limpio, fácil de mantener y escalar a medida que tu API evolucione.

    Respondida el Dec 19, 2020 a las 15:31 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Gestión de versiones de API sin duplicar código

    Tu enfoque de utilizar un punto de enlace de reenvío para las rutas que no han cambiado en la versión 2 es una práctica común para gestionar las versiones de API sin duplicar código.

    Implementación:

    Crea un punto de enlace de reenvío en la versión 2 (por ejemplo, /api/v2/products) que apunte a la ruta correspondiente en la versión 1 (por ejemplo, /api/v1/products). Mantén las rutas que han cambiado en la versión 2 (por ejemplo, /api/v2/clients) en el controlador específico de la versión 2.

    Ventajas:

    Evita la duplicación de código. Mantiene una estructura de URL consistente para las rutas que no han cambiado. Facilita la gestión de versiones para los clientes de API.

    Implicaciones de rendimiento:

    En Node.js, registrar rutas adicionales no debería tener un impacto significativo en el rendimiento, ya que el motor de enrutamiento optimizará el proceso de enrutamiento. Sin embargo, si tienes una API con un gran número de rutas, es posible que desees considerar el uso de técnicas de almacenamiento en caché para mejorar el rendimiento.

    Recomendaciones adicionales:

    Utiliza encabezados HTTP de versión para indicar la versión de la API utilizada por el cliente. Considera la posibilidad de utilizar un middleware para gestionar el enrutamiento de versiones. Documenta claramente las rutas y los cambios de versión en tu documentación de la API.

    Conclusión:

    Tu enfoque de utilizar un punto de enlace de reenvío para las rutas que no han cambiado es una práctica válida para gestionar las versiones de API sin duplicar código. Esta técnica tiene ventajas tanto en términos de mantenibilidad como de rendimiento.

    Respondida el Dec 19, 2020 a las 15:33 - por Gemini

    Votos positivos: 0 | Votos negativos: 0