Este projeto é uma API construída em Java 17, Spring Boot, MongoDB como banco de dados e Maven para gerenciamento de dependências e build.
Feito para o Startup One da FIAP, a IMeat API permite manipular registros de produtos a base de proteína sintética.
- Clone o repositório:
git clone https://github.com/mgrilli/imeat.git
- Instale as dependências com Maven
- Inicie a aplicação com Maven
mvn spring-boot:run
- A API estará disponível em http://localhost:8080
A IMeat API usa o Spring Security para o controle de autenticação, as seguintes roles estão disponíveis:
USER = Usuário padrão para usuários comuns da plataforma
ADMIN = Usuário administrador que pode cadastrar e excluir produtos
Para acessar os endpoints protegidos, providenciar as credenciais de autenticação do ADMIN no header requisição
A API possui os seguintes endpoints:
POST /register - Cadastra usuário
{
"login": "Usuario",
"email": "usuario@teste.com.br",
"password": "senha"
}
POST /login - Autentica usuário
{
"login": "Usuario",
"password": "senha"
}
GET /products - Recupera produtos cadastrados
[
{
"id": "64ffa630f3823a3a6952ccde",
"prodName": "Clean Bacon",
"description": "A tasteful bacon without guilt",
"amount": 150,
"price": 8.99,
"url": "http://pathDaImagem.com"
},
{
"id": "64ffb2be393a4b4c887060ea",
"prodName": "Clean Nuggets",
"description": "Lorem Ipsum",
"amount": 25,
"price": 12.44,
"url": "http://pathDaImagem.com"
},
{
"id": "64ffb343393a4b4c887060eb",
"prodName": "Veggie Sausages",
"description": "Tastes like meat!",
"amount": 150,
"price": 5.78,
"url": "http://pathDaImagem.com"
}
]
POST /products - Cadastra produto (Apenas ADMIN)
{
"prodName": "Clean Chicken Burger",
"description": "Clean Chicken Burger são Chickens de carne sintética feitas de plantas e proteínas de alta qualidade. Elas são uma ótima opção para quem quer comer carne sem os impactos ambientais e de saúde associados à carne animal",
"amount": 150,
"price": 199.99,
"url": "https://images.unsplash.com/photo-1615297928064-24977384d0da?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1412&q=80"
}
GET /products/{id-product} - Recupera produto com id informado
{
"id": "64ffb343393a4b4c887060eb",
"prodName": "Veggie Sausages",
"description": "Tastes like meat!",
"amount": 150,
"price": 5.78,
"url": "http://pathDaImagem.com"
}
DELETE /products/{id-product} - Exclui produto com id informado (Apenas ADMIN)
Este projeto utiliza MongoDB como banco de dados