API RESTful com ênfase nos conhecimento obtidos em Java e na utilização de seu framework Spring Boot .
Será necessário a realizar configuração das variáveis de ambiente da aplicação no arquivo .env.example
APPLICATION_NAME=store-api
DATABASE_HOST=database
DATABASE_PORT=5432
DATABASE_NAME= # Enter the postgres database name
DATABASE_USERNAME= # Enter the postgres user name
DATABASE_PASSWORD= # Enter the postgres user password
DATABASE_URL=jdbc:postgresql://${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}
APPLICATION_SECURITY_USER= # Enter the application user name
APPLICATION_SECURITY_PASSWORD= # Enter the application user password
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_EXPIRATION=15
JWT_SECRET= # Enter jwt secret
JWT_EXPIRATION=15
Para inicializar a aplicação será necessário executar o seguinte comando no diretório da aplicação:
docker-composer up -d
ou
docker compose up
📍 Endpoint: http://localhost:8080/api/v1/auth/register
📨 Método:
POST
🔒 Permissões permitidas:
ADMIN
📍 Endpoint: http://localhost:8080/api/v1/auth/login
📨 Método:
POST
🔒 Permissões permitidas:
Todas
📍 Endpoint: http://localhost:8080/api/v1/products
📨 Método:
GET
🔒 Permissões permitidas:
ADMIN
SELLER
CLIENT
📍 Endpoint: http://localhost:8080/api/v1/product/{id}
📨 Método:
GET
🔒 Permissões permitidas:
ADMIN
SELLER
CLIENT
📍 Endpoint: http://localhost:8080/api/v1/product
📨 Método:
POST
🔒 Permissões permitidas:
ADMIN
SELLER
📍 Endpoint: http://localhost:8080/api/v1/product/{id}
📨 Método:
PUT
🔒 Permissões permitidas:
ADMIN
SELLER
📍 Endpoint: http://localhost:8080/api/v1/product/{id}
📨 Método:
PATCH
🔒 Permissões permitidas:
ADMIN
SELLER
📍 Endpoint: http://localhost:8080/api/v1/categories
📨 Método:
GET
🔒 Permissões permitidas:
ADMIN
SELLER
CLIENT
📍 Endpoint: http://localhost:8080/api/v1/category/{id}
📨 Método:
GET
🔒 Permissões permitidas:
ADMIN
📍 Endpoint: http://localhost:8080/api/v1/category
📨 Método:
POST
🔒 Permissões permitidas:
ADMIN
📍 Endpoint: http://localhost:8080/api/v1/category/{id}
📨 Método:
PUT
🔒 Permissões permitidas:
ADMIN
📍 Endpoint: http://localhost:8080/api/v1/category/{id}
📨 Método:
PATCH
🔒 Permissões permitidas:
ADMIN
📍 Endpoint: http://localhost:8080/api/v1/product/{id}/image
📨 Método:
GET
🔒 Permissões permitidas:
ADMIN
SELLER
CLIENT
📍 Endpoint: http://localhost:8080/api/v1/product/{id}/image
📨 Método:
POST
🔒 Permissões permitidas:
ADMIN
SELLER
📍 Endpoint: http://localhost:8080/api/v1/product/{id}/image
📨 Método:
PUT
🔒 Permissões permitidas:
ADMIN
SELLER
📍 Endpoint: http://localhost:8080/api/v1/product/{id}/image
📨 Método:
DELETE
🔒 Permissões permitidas:
ADMIN
SELLER
Para autenticar-se no sistema e acessar os recursos permitidos com base no nível de acesso, é necessário fornecer suas credenciais no mecanismo de autenticação.
📍 Endpoint: http://localhost:8080/api/v1/auth/login
📨 Método:
POST
Exemplo de uma requisição utilizando o Postman:
Caso as credenciais sejam correspodentes com as cadastradas no sistema:
Após realizado a autenticação vá até a sessão Authorization e defina o tipo de autenticatição para Bearer Token
e informe o valor do campo token
:
Para efetuar o registro de um novo usuário, é necessário especificar tanto as credenciais do usuário quanto sua respectiva permissão:
Na eventualidade de os dados fornecidos serem válidos e não haver registro do usuário no sistema:
Adoção da linguagem de programação Java devido à sua aderência ao paradigma orientado a objetos (OOP) e à sua natureza multiplataforma.
Adoção do framework Spring Boot em virtude de sua eficácia no desenvolvimento de aplicações web e microsserviços, destacando-se pela habilidade de autoconfiguração de componentes.
Adoção do Docker em razão de sua infraestrutura fundamentada em containers, proporcionando virtualização e administração de serviços de forma mais eficiente, ágil e desacoplada.
Adoção do Redis devido à sua natureza como um armazenamento de estrutura de dados em memória. Isso possibilita a implementação de armazenamento em cache, alta disponibilidade e particionamento automático em diversos clusters.
Adoção do banco de dados PostgreSQL em virtude de seu suporte a diversas otimizações de desempenho, flexibilidade, capacidade de personalização e aprimorada segurança.