O Animals API é um projeto de backend que permite o armazenamento e gerenciamento de informações sobre animais e suas comidas. As funcionalidades incluem:
- Criação e armazenamento de animais e suas informações.
- Criação de comidas que podem ser associadas a um ou mais animais.
- Associação de comidas a animais existentes.
- Filtros avançados para busca de animais com base em parâmetros específicos.
- Upload de imagens de animais para um bucket S3 da AWS, com armazenamento do link público da imagem no banco de dados.
- Endpoints para listar todos os animais e comidas, além de buscas detalhadas por ID.
Este projeto está rodando em uma instância EC2 da AWS e utiliza um banco de dados RDS. Não é necessário baixar e configurar o projeto localmente para testá-lo, mas o projeto está preparado para execução local, caso desejado.
A API está hospedada e disponível para uso no seguinte endereço:
54.207.157.234
Para interagir com a API, você pode utilizar o Postman. Siga os passos abaixo para instalar e configurar:
- Acesse o site oficial do Postman: Postman Download.
- Baixe a versão mais adequada ao seu sistema operacional (Windows, macOS ou Linux).
- Siga as instruções de instalação na tela.
- Abra o Postman após a instalação.
- No menu superior, clique em Import.
- Selecione a opção de Upload Files e escolha o arquivo .json fornecido aqui (Arquivo de Requisições).
- Após a importação, todas as requisições da API estarão prontas para uso.
- Com o Postman aberto e as requisições já importadas, você verá uma lista de requisições à esquerda, no painel chamado Collections.
- Expanda a coleção Testes Animals AWS clicando no ícone de seta ao lado do nome da coleção.
- Clique em uma das requisições, como Create Animal (Criar Animal). Ao clicar, você verá os detalhes dessa requisição no painel central.
- No painel Body, escolha a opção form-data. É aqui que você pode preencher os campos necessários para criar um animal.
- Por exemplo, no campo type, preencha true se o animal for doméstico ou false se ele for selvagem.
- Após preencher todos os campos, clique no botão Send, localizado no canto superior direito.
- O resultado será exibido no painel inferior, mostrando a resposta da API, que pode incluir o status da requisição e o conteúdo retornado, como o ID do animal criado.
- Para testar outros endpoints, como listar animais ou adicionar uma comida a um animal, siga o mesmo processo, clicando na requisição desejada, preenchendo os campos necessários e clicando em Send.
-
- Método: POST
- URL: 54.207.157.234:8080/animals/animal
- Descrição: Cria um novo animal com seus dados, incluindo upload de uma imagem local que será armazenada no bucket S3.
- Parâmetros (form-data):
- type (texto): Define se o animal é doméstico (true) ou selvagem (false). Esta escolha será refletida no frontend.
- kind (texto): Exemplo: Cachorro
- animalSpecies (texto): Exemplo: Pinscher
- age (texto): Exemplo: 4
- name (texto): Nome do animal
- sex (texto): Sexo do animal
- owner (texto): Nome do dono do animal
- author (texto): Nome de quem adicionou esse animal
- habitat (texto): Qual o habitat natural do animal, somente para animais selvagens.
- image (arquivo): Upload de uma imagem do animal
-
- Método: POST
- URL: 54.207.157.234:8080/animals/food
- Descrição: Cria uma nova comida no sistema.
- Body (JSON):
{
-
- Método: POST
- URL: 54.207.157.234:8080/animals/food/animal/{animalId}
- Descrição: Cria uma nova comida e a associa diretamente a um animal pelo seu animalId.
- Body (JSON):
{
- Exemplo de animalId: 9729cc46-338a-4b60-8be3-6c3eb1d1c146
-
- Método: POST
- URL: 54.207.157.234:8080/animals/food/addFoodToAnimal/{animalId}/{foodId}
- Descrição: Associa uma comida existente a um animal.
- Parâmetros:
- animalId: ID do animal ao qual você quer associar a comida.
- foodId: ID da comida existente a ser associada.
-
- Método: GET
- URL: 54.207.157.234:8080/animals/animal
- Descrição: Retorna a lista de todos os animais cadastrados no sistema.
-
- Método: GET
- URL: 54.207.157.234:8080/animals/food
- Descrição: Retorna a lista de todas as comidas cadastradas no sistema.
-
- Método: GET
- URL: 54.207.157.234:8080/animals/animal/filter?page=0&size=10&type=&kind=&animalSpecies=&age=&sex&author&habitat
- Descrição: Busca animais com filtros específicos. Os parâmetros opcionais incluem:
- page: Página da listagem (Exemplo: 0)
- size: Quantidade de resultados por página (Exemplo: 10)
- type: Tipo do animal
- kind: Espécie
- animalSpecies: Espécie do animal
- age: Idade
- sex: Sexo
- author: Autor
- habitat: Habitat do animal
-
- Método: GET
- URL: 54.207.157.234:8080/animals/animal/{animalId}
- Descrição: Retorna as informações detalhadas de um animal específico, baseado no animalId.
- Exemplo de animalId: c4c1ecd8-6644-4a54-9316-2b759bb16ccc
"name": "Ração",
"whereToGet": "Loja de animais",
"price": "15.00"
}"name": "Sachê",
"whereToGet": "Loja de animais",
"price": "4.00"
}O deploy do Animals API foi feito utilizando uma instância EC2 da AWS para rodar a aplicação e um banco de dados RDS para armazenar as informações. O processo incluiu as seguintes etapas:
- Configuração da Instância EC2: A instância foi configurada para rodar o backend Java, utilizando Maven para build e execução. Foi criada uma regra no Security Group para permitir tráfego HTTP/HTTPS, possibilitando o acesso à API.
- Configuração do Bucket S3: Um bucket S3 foi criado para armazenar as imagens dos animais. A API permite o upload das imagens via form-data, e o link público dessas imagens é armazenado no banco de dados RDS.
- Configuração do RDS: O banco de dados RDS foi configurado para gerenciar as informações dos animais e das comidas. Ele está conectado à API para realizar as operações de CRUD e armazenamento dos links de imagem.
O deploy exigiu a criação de permissões adequadas para que a EC2 tivesse acesso ao bucket S3 e ao RDS via IAM Role, garantindo que as operações de upload e armazenamento de dados fossem realizadas de forma segura e eficiente.
Este projeto está sendo preparado para o frontend, que está sendo desenvolvido pelo meu amigo Guilherme Barbosa. Fique atento para futuras atualizações!