Se puede crear una API REST sin framework, pero los framework son herramientas poderosas, creadas para ofrecer al usuario formas simplificadas de hacer las cosas, en este caso: API REST. Un framework es esencialmente una herramienta creada para un propósito con funciones y bibliotecas. Como está preconstruido, también puede estar seguro de que funciona y elimina la necesidad de hacer codigo repetitivo uno mismo.
La mayoría de los proyectos eligen el frameworks adecuado en algún momento. Dado que Go es igualmente adecuado para proyectos empresariales y pequeños, solo tiene que elegir una biblioteca coincidente para crear una API tranquila con Golang. La elección puede ser un desafío, ya que Go ha existido lo suficiente como para tener numerosas soluciones disponibles. Veamos algunas de las opciones más populares.
Gin: Framework rápido para construir REST API con Go
Gin Web Framework permite crear aplicaciones web y microservicios en Golang. Se basa en una API similar a la de Martini, pero afirma ser 40 veces más rápida.
La biblioteca de Gin es minimalista y solo admite las funciones más esenciales, lo que la hace ligera y apropiada incluso para sistemas con potencia limitada.
Gin es rápido, ya que utiliza el enrutamiento basado en árboles radix para acelerar las cosas. También puede agrupar diferentes rutas, es decir, diferentes versiones de API. Esto se puede hacer infinitamente sin ninguna degradación en el rendimiento.
El soporte de middleware también es crucial porque permite que varios middleware manejen una solicitud HTTP entrante. Por lo tanto, es posible usar primero el registrador, luego la autorización y, al final, manejar la solicitud en sí. Crear su propio middleware también es un trabajo fácil.
Empezar a usar Gin es mucho más sencillo con su completa documentación. Gracias a esto, incluso los principiantes pueden aprender a usarlo rápidamente, y el manejo de errores/problemas es mucho más simple.
Formatos de datos admitidos: JSON, XML y HTML.
Gin es genuinamente minimalista, y para extenderlo, tendrías que usar soluciones de terceros. Está bien si puede encontrar algunos que estén bien respaldados y sean confiables, pero en general, este es un aspecto complicado.
Beego – Framework web de Golang enfocado en alto rendimiento y modularidad
Beego es un framework de código abierto que ofrece una amplia gama de características cuando el código base se mantiene relativamente pequeño. Está construido teniendo en cuenta la modularidad, lo que significa que contiene 8 módulos acoplados libremente que se pueden usar de forma independiente o como un conjunto. También sigue una arquitectura MVC.
Estos 2 factores lo hacen perfecto para aplicaciones empresariales que necesitan flexibilidad y limitar sus dependencias de recursos de terceros.
Beego ofrece numerosas funciones. Incluye registradores, almacenamiento en caché o incluso una herramienta de línea de comandos. Pero no solo eso, también es compatible con un ORM listo para usar. El uso de ORM hace que la integración de una base de datos con sesiones o funciones de registro sea mucho más fácil. Además, puede monitorear su QPS junto con el uso de CPU y memoria.
El uso del paquete Go HTTP nativo lo hace rápido y eficiente. Gracias a esto, una aplicación creada con Beego puede manejar un tráfico tremendo. Es otra variable que lo hace adecuado para proyectos de gran envergadura.
¿Y si encuentra algún problema? No es para preocuparse. Beego tiene un gran apoyo de la comunidad y, por lo tanto, es fácil encontrar una solución a un error.
Beego puede ser simplemente demasiado grande y tiene demasiadas funciones para que un principiante las aprenda. Por lo tanto, está destinado a programadores de Golang más avanzados.
Desafortunadamente, este marco puede ser una exageración para un proyecto pequeño: el requisito de la arquitectura MVC y el avance general de este marco Golang podrían ser demasiado para una API REST simple.
Echo: un marco tranquilo simple pero extensible para Go
Echo framework es minimalista en su esencia, pero también es fácilmente extensible. Por lo tanto, este marco es escalable y se puede utilizar para proyectos pequeños y grandes.
La cualidad más considerable de Echo es un enrutador HTTP refinado sin asignación de memoria dinámica. El enrutador es excelente para priorizar rutas de manera inteligente.
Una funcionalidad interesante de Echo es la instalación automática de certificados TSL de Let's Encrypt. El uso de plantillas es otro: esta función le permite utilizar cualquier motor de plantillas para representar plantillas con Echo.
Aparte de eso, Echo es compatible con HTTP/2, lo que mejora la velocidad y brinda una mejor experiencia de usuario. Contiene una gran cantidad de middleware útil listo para usar para que sea más útil. Además, permite a los desarrolladores escribir los suyos propios.
Los desarrolladores de Echo cuidan mucho la documentación; este aspecto siempre es una excelente combinación para proyectos grandes o pequeños. Una buena documentación significa que debería ser más fácil resolver cualquier problema o error.
Formatos de datos admitidos: JSON, XML, HTML, Archivo, Adjunto, En línea, Stream o Blob.
Chi: cree una API REST que se adapte a sus requisitos
Chi es un enrutador liviano para construir API RESTful. Su objetivo principal es admitir grandes servicios de API REST y ser componible para crecer.
Chi funciona con net/HTTP. Puede utilizar cualquier paquete HTTP o middleware compatible con net/HTTP. Esto viene con otro activo: no se requieren dependencias externas, ya que Chi se basa en el paquete Go stdlib + net/HTTP. De esta manera, no corre el riesgo de tener problemas causados por la falta de soporte de implementaciones de terceros.
Chi fue diseñado para API modulares/componibles. Puede agregar y usar middlewares, middlewares en línea, grupos de rutas y montaje de subenrutadores.
Al usar todas las funciones anteriores, Chi le permite generar documentación API a través de docgen (un subpaquete de Chi). Genera documentación de enrutamiento desde la fuente a JSON o Markdown. ¡Automáticamente!
Su enrutamiento puede ser mucho más flexible, ya que Chi admite variables en rutas de URL y patrones de ruta de expresiones regulares. Y cuando se trata de rutas, es imposible dejar de lado la capacidad de agrupar rutas que usan el mismo middleware. Ayuda a mantener el código limpio y administrar rutas en aplicaciones más extensas.
Hay un factor a considerar al construir una API pública. Chi no configura automáticamente un encabezado. Otra desventaja es la compatibilidad con versiones anteriores. Claramente, no es una prioridad para los desarrolladores de Chi: es algo a tener en cuenta al elegir Chi para un proyecto de larga duración.
Estas son las opciones que conozco, ustedes me pueden ayudar con otras? Que framework usan??