Header Ads Widget

Ticker

6/recent/ticker-posts

5 marcos PHP ligeros para crear API REST


 PHP es un lenguaje poderoso, con una amplia gama de ofertas que hacen que su uso para cualquier cosa, desde sitios web básicos hasta API complejas, sea una propuesta muy sólida. Tiene una maravillosa barrera de entrada baja, un ecosistema gigantesco de soluciones y una variedad de implementaciones de marcos que pueden hacer que haga casi cualquier cosa que sueñe.

Eso también es un problema: con tanta gente que utiliza PHP, el problema no es "no hay suficientes marcos", sino "hay demasiados marcos". En consecuencia, tamizar el mar para encontrar algunas perlas es un buen lugar para comenzar a desarrollar una API REST .

En este artículo, vamos a discutir cinco marcos PHP livianos para construir API REST. Discutiremos un poco de su historia, destacaremos sus pros y contras, y discutiremos algunas alternativas que puede comenzar a implementar hoy.

Laravel

El marco PHP para artesanos web

Logotipo de Laravel
 es un marco PHP gratuito de código abierto de Taylor Otwell basado en el concepto arquitectónico modelo-vista-controlador (MVC). El marco se lanzó por primera vez en forma beta en junio de 2011 y desde entonces se ha desarrollado y ampliado continuamente desde sus versiones iniciales.

Pros

En primer lugar, Laravel es extremadamente configurable y ampliable . Debido al hecho de que es de código abierto, gratuito y muy popular, Laravel tiene una variedad de derivados, bifurcaciones, manipulaciones y extensiones que lo hacen prácticamente capaz de hacer lo que sea que tenga que hacer.

Además, Laravel tiene una serie de medios de documentación de primer nivel , incluidos screencasts, libros y páginas web que recorren de manera limpia y clara las sutiles minucias del marco. Debido a esto, Laravel es a menudo un punto de entrada al gran mundo del framework PHP, ya que es popular y fácil de consultar. Para muchos de los que adoptan PHP por primera vez, les resultará difícil encontrar una mejor opción.

Un gran beneficio de Laravel es el hecho de que es compatible con PHP 7 . Si bien esto puede parecer un punto de venta menor para algunos, PHP 7 trae consigo un aumento dramático en el rendimiento, y algunas estimaciones sugieren aumentos de hasta el 70%. Según Zend Technologies , cuando PHPNG, la rama que eventualmente se convertiría en el núcleo de PHP 7, se implementó por primera vez, la página de inicio de WordPress requirió 9.400 millones de instrucciones de CPU para ejecutarse. Después de la implementación de PHP 7, redujo estos requisitos de instrucción a 2.6 mil millones, una reducción del 72%.

Quizás aún más importante es el hecho de que Laravel es compatible con PSR 7 , lo que significa que se adhiere a las recomendaciones estándar de PHP del grupo PHP-FIG y las descripciones RFC 7230, 7231 y 3986.

Laravel, al igual que la mayoría de las soluciones de esta pieza, viene con varias características especiales. Laravel Scout es una solución basada en controladores para la gestión de bases de datos que sincroniza los índices de búsqueda de la base de datos con la implementación empaquetada de Eloquent ORM ActiveRecord. Además, Laravel incluye una solución Laravel Echo que transmite actualizaciones de datos a través de conexiones WebSocket para implementar interfaces de usuario en tiempo real.

Finalmente, y quizás uno de los puntos de venta más fuertes para Laravel, hay un paquete de autenticación incluido para API en forma de Laravel Passport. Passport es una implementación completa de servidor OAuth 2.0 que se promociona como configurable en "minutos" .

Contras

Con todo lo dicho, Laravel tiene algunos problemas que podrían dificultar su adopción. Laravel es demasiado dependiente de las consultas de la base de datos , a menudo llamando de una manera que algunos desarrolladores considerarían "excesiva". Si bien esto no es realmente un problema con servicios más grandes, como marco liviano , esto se convierte en un problema, causando congestión en el backend.

Además, si bien su compatibilidad con el enrutamiento inverso (en el que una URL se deriva de una ruta determinada, en lugar de una ruta que se deriva de una URL determinada) es en algunos casos algo bueno, los métodos reales utilizados para invocar el enrutamiento inverso pueden ser algo complejo, lo que genera gastos generales en un microservicio.

Sin embargo, lo que más duele a Laravel es el hecho de que carece de mucho apoyo de la comunidad que disfrutan otras soluciones. Si bien las implementaciones de terceros son excelentes, aún palidecen en comparación con las gemas Ruby, los PIP de Python y los NPM de Node.js. Lo que esto significa en última instancia es que Laravel es poderoso, pero limitado por su apoyo comunitario relativamente superficial en comparación con los sistemas de soporte de la competencia.

Lea también: Construyendo una API REST en Java y Scala usando Play Framework

Lumen

El micro-framework increíblemente rápido de Laravel

 está íntimamente relacionado con Laravel, ya que Taylor Otwell lo desarrolló para construir microservicios Laravel rápidamente de una manera rápidamente implementable. Sin embargo, desde 5.2, se ha movido en una dirección ligeramente diferente, evitando muchos de los vestigios para volverse mucho más elegante que Laravel.

En particular, Lumen a partir de la versión 5.2 ya no incluye sesiones y vistas como parte de su marco, relegando eso solo a Laravel. Esto da como resultado un marco mucho más ágil que Laravel y cambia el enfoque más hacia las API sin estado .

Pros

Lumen es básicamente Laravel, pero rápido . Al deshacerse de muchos de los componentes adicionales que no combinan bien con las API sin estado, Lumen ha logrado reducir considerablemente su tamaño, lo que la convierte en una solución extremadamente rápida y liviana sobre otros marcos.

Debido en gran parte a esta y otras opciones de diseño, Lumen es una excelente opción para microservicios y optimización de API para un tiempo de respuesta rápido. El marco se ha diseñado desde el primer día para ser más rápido que cualquier otra cosa, por lo que a menudo se cita como una opción óptima para implementaciones dependientes de la velocidad. Además, Lumen es simple en su sintaxis , lo que permite una fácil implementación .

La relación íntima con Laravel también le da algunos beneficios a Lumen que otros marcos no tienen. Si bien el soporte de terceros de Laravel no es tan bueno como otras soluciones, y su comunidad es relativamente más estrecha que otras, aún cuenta con una gama preestablecida de extensiones y dispositivos que otras soluciones pueden no tener.

Una de las mayores fortalezas de Lumen es una entidad no medible: el hecho de que fue diseñado por Otwell, que tiene bastante experiencia en el marco de microservicios, es algo que debe mencionarse. Además, los proyectos de Lumen pueden simplemente colocarse en una instalación de Laravel para una funcionalidad instantánea, lo que significa que cualquier cosa escrita para Lumen puede funcionar con todos los beneficios y características de Laravel propiamente dicha .

Contras

Curiosamente, la mayoría de las desventajas de Lumen en realidad se derivan del mismo lugar donde se encuentran sus ventajas: su relación íntima con Laravel. Si bien mucho ha divergido en el desarrollo, todavía hay muchos pequeños hangons de Laravel que hacen que Lumen sea imperfecto.

Un gran punto aquí es que si no le gusta la sintaxis o el enfoque de Laravel para las consultas de la base de datos , no le gustará Lumen tanto, ya que muchas de sus prácticas son similares. Dicho esto, Laravel es más lento que Lumen por una milla amplia, por lo que esto podría no ser un problema cuando se compara con los posibles beneficios.

Por muy rápido que sea Lumen, no es el más rápido del bloque, como se suele afirmar. Como tal, si a los desarrolladores no les gusta la sintaxis o el enfoque y simplemente desean adoptar la velocidad, esto debería ser un poco moderado con el conocimiento de que hay otros marcos aún más rápidos con los que trabajar.

Marco de onda

Micro-framework PHP de código abierto centrado en API

Como Laravel, Wave Framework es un micro framework PHP construido sobre el paradigma modelo-vista-control. Wave se desarrolló inicialmente para enfocarse en una huella pequeña y una velocidad optimizada, y desde entonces ha evolucionado a su forma actual, proporcionando controladores de vista integrados, una puerta de enlace funcional del sitio web y un controlador JavaScript.

Sin embargo, Wave es mucho más de lo que implica en su documentación; si bien es cierto que Wave es pequeño y está bien optimizado, tiene algunas fortalezas internas reales que rigen su funcionalidad.

Pros

Quizás el mayor atractivo de Wave es que es muy, muy pequeño, pero hace mucho con tan poco. Wave cuenta con un soporte bastante impresionante que otros marcos no tienen, en particular, el soporte completo de UTF-8 y jQuery de forma nativa. Además, Wave admite una amplia gama de tipos de devolución de datos , incluidos XML, CSV, JSON, HTML, PHP nativo y más.

Solo por esta razón, a muchos desarrolladores les encanta Wave . Sin embargo, hay una razón aún mayor para admitirlo: Wave utiliza un cifrado de seguridad de primer nivel , 256 Rijndael, para cifrar todo su proceso de transmisión de datos. Si bien otros marcos pueden utilizar esto a través de una variedad de implementaciones o extensiones adicionales, Wave lo hace de forma nativa y lo hace de manera extremadamente rápida.

Wave Framework también cuenta con algunas otras características excelentes en su repositorio de GitHub . En primer lugar, Wave tiene una gran integración para la generación de documentación , lo que reduce gran parte de la carga de los desarrolladores cuando se trata de crear estos documentos para los usuarios. Además, Wave Framework tiene un conjunto de pruebas de API integrado que podría ayudar a permitir un rápido desarrollo, prueba e iteración de API.

Contras

Sin embargo, el mayor aspecto negativo es el hecho de que es muy diferente de otras implementaciones . Con tantos marcos basados ​​en esfuerzos anteriores, como Laravel y Lumen, tener un enfoque novedoso es tanto una bendición como una maldición, lo que requiere que los desarrolladores vuelvan a aprender esencialmente lo que de otro modo estaría implícito en otros marcos.

Además, aunque admite una cantidad impresionante de tipos y formatos de datos, carece de muchas funciones adicionales que algunos desarrolladores podrían esperar de su implementación. Si bien esto está determinado en gran medida por el alcance y la escala de su proyecto, esto presenta un problema en términos de escalabilidad a largo plazo . No todos los proyectos están diseñados desde el principio con el estado final en mente, por lo que a medida que el desarrollo continúa y el alcance del proyecto aumenta, la utilización de este marco puede resultar en muchas conversaciones de "pero el marco no admite esto".

Ciertamente puede evitar esto agregando implementaciones adicionales, extensiones, etc., pero en cierto punto esto se vuelve insostenible. Esto no es necesariamente un problema con el marco en sí, por supuesto, pero definitivamente es algo a considerar. Wave Framework, quizás más que cualquier otro marco de esta lista, es verdaderamente un marco "micro".

Tutorial de desarrollo de API: creación de API en la JVM con Kotlin y Spark

Sílex

El micro-framework PHP basado en los componentes Symfony

 es un poco interesante. Escrito en PHP y basado en Symfony , Silex es escalable en todos los sentidos de la palabra: el concepto de diseño desde el principio fue hacer que el marco sea tan liviano como lo necesita, permitiendo funcionalidad adicional a través de extensiones base .

Como tal, Silex existe actualmente en dos formas . Existe la versión "fat", que incluye un motor de plantillas, componentes Symfony, abstracción de la base de datos, un contenedor Twig y más, y luego está la versión "delgada", que contiene solo el motor de enrutamiento básico y los diversos métodos de vinculación en funcionalidad adicional a través de extensiones.

Pros

Juzgar Silex es muy difícil de hacer en un sentido general cuando hablamos de frameworks livianos, porque gran parte de esto depende completamente de la versión que uses.

Con la versión grasa, la integración de HttpKernel de Symfony para abstraer solicitudes y respuestas ayuda drásticamente en las pruebas de aplicaciones , lo que puede acelerar el tiempo de comercialización a pasos agigantados. El uso de Pimple para la inyección de dependencias hace que las clases de aplicación se puedan usar como si fueran matrices, lo que hace que las clases de Silex sean extremadamente flexibles.

Algo de eso también se transfiere a la versión delgada, pero delgado se trata más de la velocidad de su enrutamiento. Con menos gastos generales y funciones, Silex slim es predeciblemente muy rápido , lo que resulta atractivo para servicios más pequeños o servicios que dependen del procesamiento básico de grandes cantidades de datos .

Sin embargo, hay algo que decir sobre la posibilidad de elegir en términos de qué tan grande desea que sea su marco. Tener la opción entre una versión amplia o delgada del código base y la opción de expandirlo más tarde de una manera autorizada oficialmente es realmente poderoso y abre muchas opciones para los desarrolladores.

Un gran argumento para Silex es que es muy extensible . Pimple es funcionalmente un contenedor de microservicios , lo que permite a las bibliotecas de terceros la capacidad de vincularse, lo que lo hace tanto vacío como rico en características en una especie de increíble superestado de disponibilidad de características cuánticas.

Contras

Habiendo dicho todo eso, la doble opción es un problema tanto como una característica. Dependiendo de la versión que obtenga, es posible que Silex no haga realmente lo que usted quiere que haga de inmediato, y descubrir esto solo después de un largo proceso de intentar que haga lo que quiere es quizás una de las cosas más frustrantes el desarrollador puede experimentar.

Incluso ignorando eso, que no es tanto un problema del marco sino más un problema del desarrollador, existe el problema obvio de la velocidad . Sí, Silex es muy rápido, en su modo delgado . A medida que agrega funcionalidad adicional, la velocidad puede disminuir, lo que dificulta escalar con mayores cantidades de datos. Dado que estamos hablando de ser livianos, esto se convierte en un problema grave.

Dicho todo esto, el problema real aquí radica en la mala planificación del microservicio en sí: si el desarrollador planea mal, se encontrará con una mayor cantidad de problemas en Silex relacionados con su mala planificación que en otros idiomas, y al final de al día, podrían encontrarse con una situación en la que el marco que adoptaron para la velocidad ya no sea rápido debido a su propia mala planificación.

Consulte también: Más de 12 marcos para crear bots de ChatOps

Limonade

Un micro framework PHP para el desarrollo rápido y la creación de prototipos

Limonade , como Wave, tiene que ver con la simplicidad y la funcionalidad ligera. Declarado por los desarrolladores como "inspirado por frameworks como Sinatra o Camping in Ruby u Orbit in Lua", Limonade es relativamente fácil de implementar y usar, y es muy atractivo para los desarrolladores que buscan una implementación simple y directa .

Pros

El atractivo principal de Limonade es el hecho de que es completamente autónomo . Limonade llega en un solo archivo, y debido a cómo está estructurado, todo se hace dentro del contenido de la carpeta lib. Limonade está diseñado para ser extremadamente liviano y realmente se refleja en cómo está empaquetado y cómo los desarrolladores interactúan con él.

Como parte de eso, todo lo que haces dentro del marco es igual de simple . Limonade está diseñado para ser minimalista y, por lo tanto, es extremadamente fácil de usar.

Contras

Desafortunadamente, ese minimalismo es parte del problema. Limonade es extremadamente pequeño, tanto en términos de tamaño como en lo que puede hacer en comparación con sus contemporáneos.

Y si bien esto generalmente no sería un problema con algo como Silex, que puede ampliarse, Limonade es autónomo y no tiene una versión "gruesa" ni "delgada". Esto ha dado lugar a una situación en la que, aunque Limonade es tan útil como cuando se publicó por primera vez, ha sido eclipsado drásticamente por marcos más modernos.

Además, Limonade depende demasiado de las funciones globales . Limonade en realidad no contiene una clase, sino que define las funciones que se pueden usar. Esto da como resultado soluciones muy complicadas para la funcionalidad básica que podría no estar expresamente proporcionada por el marco y puede crear problemas a largo plazo dentro de los conceptos de diseño de microservicios en el lado del desarrollador.

Otros marcos

Eso no quiere decir que estas cinco entradas sean los únicos marcos PHP disponibles para el desarrollo de microservicios / API. Hay muchos, muchos marcos a los que tiene acceso el desarrollador promedio. Algunos tienen más funciones que otros, y algunos son específicos en funcionalidad para un caso de uso dado, pero la amplia gama de marcos disponibles para los desarrolladores es simplemente vertiginosa:

  • Plataforma API (PHP) : el "marco PHP definitivo para crear API web modernas". Incluye soporte para una amplia variedad de paquetes de Symfony.
    Delgado
  • Apigility : desarrollado usando Zend Framework 2 y, por lo tanto, se ejecuta sobre la pila de Zend Framework MVC.
  • Flight : diseñado ante todo para ser extensible y simple. Excelente para ciclos rápidos de desarrollo e implementación.
  • Bullet : utiliza devoluciones de llamada de enrutamiento anidado y ofrece un Composer para la administración de paquetes y la carga automática. Se ajusta automáticamente a los requisitos de la especificación HTTP.
  • Phalcon : marco de pila completa diseñado como una extensión C. Construido sobre el patrón modelo-vista-controlador, y diseñado específicamente para ser de "alto rendimiento".
  • Frapi : Frapi está diseñado para no ser un "marco de trabajo de propósito general", sino que, según su documentación, tiene como objetivo "eliminar toda la complejidad de la capa de interfaz que el manejo de llamadas REST puede traer".
  • Recess : en lugar de centrarse en la velocidad o la optimización, Recess está diseñado para ser "divertido". Si bien todavía es tan rápido como sus contemporáneos, está diseñado específicamente para hacer más con menos código, con la idea de sacar al desarrollador de la línea de comandos y desplegar el ciclo.
  • Slim : un microframework PHP con un enrutador HTTP rápido, compatibilidad con PSR-7 y compatibilidad con inyección de dependencia que se puede utilizar para "escribir rápidamente aplicaciones web y API simples pero potentes".
  • EBHub SPA Framework : una plataforma compuesta de back-end (PHP) y front-end (Javascript) que se utiliza para crear aplicaciones de una sola página, incluidos proyectos que no son de SPA y API en la web sin estar encima de otro marco, pero que se integra fácilmente con terceros. Bibliotecas PHP y Javascript.

Publicar un comentario

0 Comentarios