Esta biblioteca es un microservicio que almacena archivos utilizando la abstracción del sistema de archivos league/flysystem. Fue creada para permitir que nuestros equipos de desarrollo en 2am.tech eviten tener que configurar adaptadores de almacenamiento una y otra vez en proyectos que utilizan una infraestructura de microservicios. Es una combinación de dos aplicaciones independientes: una es una aplicación CI de Symfony y la otra es una API construida con Slim3.
El proyecto utiliza Monolog para el registro de logs, Fractal como serializador, Tactician como bus de comandos, autenticación básica (Basic access authentication) y JSON Web Tokens para autenticación (esto es opcional), Zend Filter para el filtrado y validación de datos, y Phinx para las migraciones de base de datos.
Los archivos de Docker Compose y la colección de Postman están incluidos para facilitar el desarrollo, aunque Docker no es estrictamente necesario, ya que fácilmente podrías usar el servidor embebido de PHP.
Instalación
Instala la última versión usando Composer.
$ composer create-project --no-interaction --stability=dev 2amigos/storage-service app
Configuración
El proyecto usa archivos de entorno para configurar los secretos. Por ese motivo, debe crear un archivo denominado .env en el directorio raíz del proyecto. Un Ejemplo de.env. se ha proporcionado el archivo con todos los valores de entorno requeridos. Modifique ese archivo y guárdelo como .env en el directorio raíz.
De forma predeterminada, la aplicación API está configurada para funcionar en los procesos de autenticación básicos. Para ello, utiliza una variedad de usuarios, pero puede cambiar fácilmente ese comportamiento configurando la opción de autenticación del Middleware de autenticación básica HTTP creando el suyo propio o utilizando uno proporcionado por la biblioteca. Consulta el Autenticador PDO.
Si la autenticación se realiza correctamente, la acción devolverá un token web Json que se utilizará en las llamadas posteriores.
La autenticación o el uso de ámbitos son opcionales. Si no desea trabajar con este tipo de configuración, simplemente elimine las configuraciones de middleware de Autenticación básica HTTP, Autenticación JWT y Alcance Middleware middleware.
Uso
Crea una base de datos con las credenciales que definiste en el archivo .env. Ahora puedes ejecutar las migraciones de base de datos con Phinx utilizando el siguiente comando:
./vendor/bin/phinx migrate -e development
Para este ejemplo, vaya a la carpeta pública de la aplicación e inicie el servidor PHP integrado de la siguiente manera:
php -S localhost:8080
Ahora podemos acceder a la API en http://127.0.0.1:8080.
Consigue un token
Para obtener un token, haga lo siguiente:
1$ curl "https://127.0.0.1:8080/token" \
2--request POST \
3--include \
4--insecure \
5--header "Content-Type: application/json" \
6--data '["mail.all"]' \
7 --user test:test
8
9# response
10HTTP/1.1 201 Created
11Content-Type: application/json
12{
13"data": { "token": "XXXXXXXXXX", "expires": 1550271641 }
14}
Para obtener más información, consulte su documentación en GitHub.