Este projeto é um site onde é possível cadastrar cães para adoção. Ele permite que os usuários adicionem informações sobre cães disponíveis para adoção e visualizem os cães cadastrados.
Obs.: As fotos dos animais são meramente ilustrativas e fazem parte de uma requisição REST para uma API Externa (explicado ao longo deste documento)
Este repositório contém o código fonte do backend para o projeto de adoção de cães utilizando Flask como framework web e SQLite como banco de dados.
- Cadastro e atualização de pets para adoção.
- Exibição e remoção de pets cadastrados.
- Integração com uma API externa para obter informações adicionais sobre os pets.
Siga as etapas abaixo para configurar o ambiente local e instalar as dependências necessárias:
Certifique-se de ter o Docker instalado em sua máquina. Você pode verificar se o Docker está instalado executando o seguinte comando:
docker --version
Se o Docker não estiver instalado, siga as instruções de instalação na documentação oficial do Docker
- Clone o repositório:
git clone https://github.com/raquelwainfas/pjt_maqp_backend.git
cd seu-repositorio
- Construa a imagem Docker:
Navegue até o diretório do projeto e execute o comando abaixo para construir a imagem Docker:
docker build -t backend:1.0 .
- Execute o contêiner Docker:
Depois que a imagem for construída, será informado o ID da imagem. Execute o seguinte comando para iniciar o contêiner:
docker run --rm -d -p 5000:5000 <id da imagem>
Este comando irá executar o contêiner em segundo plano (-d) e mapear a porta 5000 do contêiner para a porta 5000 do host, tornando o site acessível em http://localhost
- Para para a execução do contêiner:
Primeiro, liste os contêineres em execução para encontrar o ID ou nome do contêiner:
docker ps
Em seguida, pare o contêiner usando o ID ou nome do contêiner:
docker stop <container_id_or_name>
/pjt_maqp_backend
│ app.py
│ Dockerfile
│ requirements.txt
└───instance
└───animais.db
Usuário
Interage com a aplicação através de um navegador web.Camada de Apresentação
- HTML: Estrutura da página.
- CSS: Estilização da página.
- JavaScript: Comportamento dinâmico e interatividade.
- Bootstrap: Framework CSS para estilização responsiva e componentes prontos.
Camada de Aplicação
- Flask: Gerencia rotas, lógica de negócio e renderização de templates.
- app.py: Arquivo principal onde a aplicação Flask é configurada e executada.
Camada de Dados
SQLite: Banco de dados relacional para armazenar informações sobre os pets disponíveis para adoção.
Infraestrutura
Docker: Ferramenta para criar contêineres que encapsulam a aplicação e suas dependências.
- Usuário acessa a aplicação através do navegador.
- Camada de Apresentação envia requisições HTTP para o servidor
- Camada de Aplicação processa as requisições, interage com o banco de dados (se necessário) e retorna as respostas apropriadas
- Camada de Dados armazena e recupera dados conforme solicitado pela aplicação.
- Infraestrutura Docker garante que a aplicação e suas dependências rodem de forma consistente e isolada.
- API Externa a camada de aplicação é responsável por processar a requisição para essa API. O endpoint utilizado: https://dog.ceo/api/breeds/image/random.
Essa arquitetura modularizada ajuda a manter o código organizado, facilita a manutenção e possibilita a escalabilidade futura da aplicação.
- / : Retorna informação de que a aplicação está no ar.
- GET /animais: Retorna todos os pets cadastrados.
- POST /animais: Cadastra um novo pet.
- PUT /animais/id_animal: Atualiza as informações de um pet existente.
- DELETE /animais/id_animal: Remove um pet do sistema.
Endpoint:
https://dog.ceo/api/breeds/image/random
Retorno:
{
"message": "https://images.dog.ceo/breeds/retriever-golden/n02099601_5893.jpg",
"status": "success"
}
A chave message
retorna diretórios aleatórios que contem a imagem do pet. Esta URL fica armazenada no banco de dados instance/animais.db
e é automaticamente associada a um animal no momento de sua criação (inserção).
Rota: /animais
Tipo de requisição: POST