API de estoque de produtos desenvolvida em Spring Boot para fins de aprendizagem. O banco de dados utilizado foi o H2. Para os testes da API foi utilizado o JUnit5, e para a documentação o Swagger.
-
Faça o clone do repositório:
$ git clone https://github.com/Pedro-Manoel/api-rest-sistema-estoque-produto.git
-
Entre na pasta do projeto:
$ cd api-rest-sistema-estoque-produto
-
Execute o seguinte comando
-
Para executar a aplicação:
$ mvn spring-boot:run
-
Para executar os testes:
$ mvn test
-
Um demostrativo do funcionamento das rotas da API utilizando dados fictícios. As rotas são as seguintes:
- GET : rota que retorna a documentação da API gerada pelo Swagger.
- GET : rota que retorna uma interface WEB para interagir com o banco de dados H2.
-
POST : rota para criar um tipo de produto.
-
Request
{ "nome": "Perecível" }
-
Response
{ "id": 1, "nome": "Perecível" }
-
-
GET : rota para listar todos os tipos de produto cadastrados.
-
Response
[ { "id": 1, "nome": "Perecível" }, { "id": 2, "nome": "Industrial" }, { "id": 3, "nome": "Duravél" } ]
-
-
GET : rota para retornar um tipo de produto já cadastrado.
-
Response
{ "id": 1, "nome": "Perecível" }
-
-
PUT : rota para atualizar um tipo de produto já cadastrado.
-
Request
{ "nome": "Não Duravél" }
-
Response
{ "id": 1, "nome": "Não Duravél" }
-
-
DELETE : rota para remover um tipo de produto já cadastrado.
-
Response
{ "message": "Tipo de produto com id 1 foi removido com sucesso" }
-
-
POST: rota para criar um fornecedor.
-
Request
{ "nome": "Márcia Renata Souza", "cnpj": "14.349.383/0001-12", "telefone": "(83) 99431-0895", "email": "marciarenata@flores.com.br", "endereco" : { "rua": "Rua Antônio Vicente", "bairro": "Jaguaribe", "cidade": "João Pessoa", "numero": 16, "cep": "58015-210", "uf": "PB" } }
-
Response
{ "id": 1, "nome": "Márcia Renata Souza", "cnpj": "14.349.383/0001-12", "telefone": "(83) 99431-0895", "email": "marciarenata@flores.com.br", "endereco" : { "rua": "Rua Antônio Vicente", "bairro": "Jaguaribe", "cidade": "João Pessoa", "numero": 16, "cep": "58015-210", "uf": "PB" } }
-
-
GET: rota para listar todos os fornecedores cadastrados.
-
Response
[ { "id": 1, "nome": "Márcia Renata Souza", "cnpj": "14.349.383/0001-12", "telefone": "(83) 99431-0895", "email": "marciarenata@flores.com.br", "endereco" : { "rua": "Rua Antônio Vicente", "bairro": "Jaguaribe", "cidade": "João Pessoa", "numero": 16, "cep": "58015-210", "uf": "PB" } }, { "id": 2, "nome": "Paulo Anderson Silveira", "cnpj": "69.496.726/0001-63", "telefone": "(83) 99431-0895", "email": "ppauloanderson@queirozgalvao.com", "endereco" : { "rua": "Rua Antônio Brant Ribeiro", "bairro": "Centro", "cidade": "Ponte Nova", "numero": 18, "cep": "35430-036", "uf": "MG" } }, { "id": 3, "nome": "Lorenzo Rodrigo Figueiredo", "cnpj": "89.847.027/0001-28", "telefone": "(34) 99276-3804", "email": "llorenzorodrigofigueiredo@dyna.com.br", "endereco" : { "rua": "Rua das Laranjeiras", "bairro": "Sobradinho", "cidade": "Brasília", "numero": 25, "cep": "73015-135", "uf": "DF" } } ]
-
-
GET: rota para retornar um fornecedor já cadastrado.
-
Response
{ "id": 1, "nome": "Márcia Renata Souza", "cnpj": "14.349.383/0001-12", "telefone": "(83) 99431-0895", "email": "marciarenata@flores.com.br", "endereco" : { "rua": "Rua Antônio Vicente", "bairro": "Jaguaribe", "cidade": "João Pessoa", "numero": 16, "cep": "58015-210", "uf": "PB" } }
-
-
PUT: rota para atualizar um fornecedor já cadastrado.
-
Request
{ "nome": "Márcia Renata Souza", "cnpj": "14.349.383/0001-12", "telefone": "(83) 99431-2245", "email": "marciarenata@hotmail.com.br", "endereco" : { "rua": "Rua Treze", "bairro": "Umbu", "cidade": "Alvorada", "numero": 326, "cep": "94834-280", "uf": "RS" } }
-
Response
{ "id": 1, "nome": "Márcia Renata Souza", "cnpj": "14.349.383/0001-12", "telefone": "(83) 99431-2245", "email": "marciarenata@hotmail.com.br", "endereco" : { "rua": "Rua Treze", "bairro": "Umbu", "cidade": "Alvorada", "numero": 326, "cep": "94834-280", "uf": "RS" } }
-
-
DELETE: rota para remover um fornecedor já cadastrado.
-
Response
{ "message": "Fornecedor com id 1 foi removido com sucesso" }
-
-
POST: rota para criar um produto.
-
Request
{ "nome": "Arroz branco", "precoVenda": 2.50, "precoCompra": 2.80, "codBarra": "508010204471", "quantEstoque": 18, "fornecedorId": 1, "tipoProdutoId": 1 }
-
Response
{ "id": 1, "nome": "Arroz branco", "precoVenda": 2.50, "precoCompra": 2.80, "codBarra": "508010204471", "quantEstoque": 18, "fornecedorId": 1, "tipoProdutoId": 1 }
-
-
GET: rota para listar todos os produtos cadastrados.
-
Response
[ { "id": 1, "nome": "Arroz branco", "precoVenda": 2.50, "precoCompra": 2.80, "codBarra": "508010204471", "quantEstoque": 18, "fornecedorId": 1, "tipoProdutoId": 1 }, { "id": 2, "nome": "Feijão preto", "precoVenda": 3.20, "precoCompra": 2.20, "codBarra": "664659445924", "quantEstoque": 13, "fornecedorId": 3, "tipoProdutoId": 1 }, { "id": 3, "nome": "Doce de leite", "precoVenda": 4.40, "precoCompra": 4.60, "codBarra": "328607918450", "quantEstoque": 23, "fornecedorId": 2, "tipoProdutoId": 2 } ]
-
-
GET: rota para retornar um produto já cadastrado.
-
Response
{ "id": 1, "nome": "Arroz branco", "precoVenda": 2.50, "precoCompra": 2.80, "codBarra": "508010204471", "quantEstoque": 18, "fornecedorId": 1, "tipoProdutoId": 1 }
-
-
PUT: rota para atualizar um produto já cadastrado.
-
Request
{ "nome": "Arroz branco", "precoVenda": 3.50, "precoCompra": 3.80, "codBarra": "508010204471", "quantEstoque": 9, "fornecedorId": 2, "tipoProdutoId": 1 }
-
Response
{ "id": 1, "nome": "Arroz branco", "precoVenda": 3.50, "precoCompra": 3.80, "codBarra": "508010204471", "quantEstoque": 9, "fornecedorId": 2, "tipoProdutoId": 1 }
-
-
DELETE: rota para remover um produto já cadastrado.
-
Response
{ "message": "Produto com id 1 foi removido com sucesso", }
-
-
PATCH: rota para atualizar o estoque de um produto já cadastrado.
-
Request
{ "quantEstoque": 12, }
-
Response
{ "id": 1, "nome": "Arroz branco", "precoVenda": 3.50, "precoCompra": 3.80, "codBarra": "508010204471", "quantEstoque": 12, "fornecedorId": 2, "tipoProdutoId": 1 }
-
Esse projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.