Usando API-Platform para construir un API Rest en poco tiempo

Hola a todos de nuevo ¡

Llevaba un tiempo sin escribir entradas sobre symfony pero hoy he retomado estas tareas para poder ofreceros nuevos trucos/curiosidades sobre el framework Symfony.

En este caso, he empezado a usar esta herramienta basada en Symfony, llamada api-platform.  No es más ni menos que un proyecto ya formado que podemos utilizar para crear nuestra API en muy poco tiempo(o eso aseguran), y que si echáis un vistazo a su documentación (que es genial y muy completa, pero toda en Ingles) podréis ver la potencia y cantidad de utilidades que trae consigo. No las voy a enumerar una a una, porque se haría muy extenso y lo podéis leer en su documentación pero voy a contar un poco mi experiencia usándolo.

Primeros pasos

En mi caso y siguiendo la documentación en todo momento, he optado por crear un repositorio en github usando el template que provee el proyecto para crear mi propio proyecto con la misma estructura que tiene api-platform para empezar a usarlo (que no es mas que un fork del original).

Después de crear el proyecto, clonamos dicho repositorio en nuestra maquina y comenzamos a levantar los contenedores docker para levantar el proyecto.

$ docker-compose pull # Download the latest versions of the pre-built images
$ docker-compose up -d # Running in detached mode

En este punto tendremos los siguientes contenedores de Docker corriendo:

contenedores docker

Y listo ¡ Bueno… no del todo, pero ya tenemos levantada nuestra API Rest.

Si accedemos a https://localhost veremos lo siguiente:

The welcome page

Podemos navegar entre el API y el admin, cuyo API usa SwaggerUI y OpenApi para mostrar todos los endpoints disponibles en nuestra API Rest. En ella encontraremos para cada entidad (mapeada y con anotaciones) las distintas acciones disponibles (GET, POST, PUT, PATCH, DELETE, etc). Podéis seguir el ejemplo que ponen en la documentación para, a través de anotaciones en las entidades, disponer de forma inmediata de los endpoints.

Estructura del proyecto

Al crear el proyecto de esa forma (se puede añadir también como una receta de Flex de forma automática en otro proyecto ya existente), se crea la siguiente estructura de carpetas:

Donde tenemos lo siguiente:

  • admin: Aquí se encuentra el código del admin, que no es mas que una aplicación Javascript reactiva o SPA que consume el API y “pinta” los datos de nuestra aplicación.
  • api: Aquí es donde se encuentra nuestra API, y dentro tenemos un proyecto symfony 4 con nuestras entidades, controllers, etc. y donde podremos crear nuestro código de backend como nos apetezca.
  • client: Aquí nos dejan una proyecto VueJs básico donde podremos crear nuestro “cliente” que consuma la API. Podemos usarlo o directamente borrarlo si lo que queremos es crear microservicios y no una especie de monolito dividido por carpetas. Para un proyecto pequeño no lo descartaría pero si lo que queremos es crear microservicios o algo mas complejo, creo que lo mejor seria eliminar dicha carpeta y separar los proyectos.
  • El resto es bastante comprensible, tenemos docker, y algunas configuraciones que vienen por defecto en el proyecto de api-platform que podemos usar o eliminar.

Consideraciones

En mi caso, he empezado con este tipo de arquitecturas a nivel particular para aprender poco a poco ya que he seguido algunos tutoriales pero no me han llegado a funcionar como esperaba. Así que decidí comenzar con este para ver un proyecto completo y funcional. Y me a gustado gratamente tanto por lo bien hecho como por la documentación.

Un problema que he tenido tratando de usar Postman para comprobar las peticiones al API de forma externa(sin usar los paneles admin o API del proyecto) y me encontré con que Postman no era capaz de localizar el host y es que buscando un poco de información encontré la solución al problema de: Error connecting to https://localhost/books

Y es que Postman trata de verificar el certificado SSL para hacer las requests y para solucionarlo no hay mas que desactivar esa opción en los ajustes tal que así:

Poner a Off donde pone SSL certificate verification. Y listo, si volvemos a lanzar la Get Request desde Postman, podremos empezar a consumir nuestro tan querido API Rest.

 

Por ultimo, espero que compartais con vuestros contactos sean developers o no, este articulo y prometo ir añadiendo más cosas que voy probando/aprendiendo para poder compartirlas con tod@s vosotr@s.

Gracias ¡

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .