Skip to content

elmonvn/desafiocarrinho

Repository files navigation

DesafioCarrinho

Projeto para criação de RESTful API para serviço de carrinho de compras

Equipe

Apresentação da solução

O aplicativo consiste serviço de carrinho de compras em arquitetura de REST API.

Apesar de ser uma solução padrão e simples, optou-se por implementar este projeto como um RESTful API server, em arquitetura Model-View-Controller (MVC), para demonstrar a robustez e a flexibildiade do framework Spring Data REST.

As tecnologias selecionadas, portanto, foram:

  • Java versão 11;
  • frameworks Spring Data REST e Spring Data JPA;
  • e base de dados embutida Apache Derby.

A escolha do framework Spring Data REST deveu-se, principalmente, pela facilidade de criar serviços CRUD, automaticamente a partir dos modelos e da interface CrudRepository.

Pré-requisitos

  • Java >= 11;
  • Gradle >= 6;
  • cURL ou outra ferramenta de teste de REST APIs.

Utilização

Banco de Dados

Apenas é necessário o Java (versão >=9) instalado para utilização do Apache Derby. Porém, como, neste projeto, foi slecionada sua versão embedded, não é necessário nenhum setup de ambiente.

Aplicação

Serão listadas aqui as possíveis interações com o aplicativo via cURL, mas seria factível também a utilização de web browsers ou outras ferramentas de desenvolvimento Web, conforme mencionado acima.

Iniciar aplicação

Como anteriormente disposto, é necessária a utilização de um Java Runtime Environment a partir da versão 11, visto que o serviço está "empacotado" como um arquivo jar a ser executado de forma standalone.

A melhor e mais segura maneira de executar o serviço de forma encapsulada, sem preocupação com dependências e classpaths, é através do utilitário Gradle, como segue.

Após seu download, o pacote jar acima deve executado como:

./gradlew buildRun

O serviço estará disponível no endereço http://localhost:8080/api

Exemplos de acesso à API

Cadastrar cupom (com código e % de desconto)

curl -vX POST -H "Content-type: application/json" -d '{"codigo": "sextou", "desconto": "20"}' http://localhost:8080/api/cupom

Listar todos os cupons cadastrados

curl -vX GET http://localhost:8080/api/cupom

Deletar um cupom específico

curl -vX DELETE http://localhost:8080/api/cupom/1

Atualizar um cupom específico

curl -vX PUT -H "Content-type: application/json" -d '{"desconto": "30"}' http://localhost:8080/api/cupom/1

Cadastrar produto (com nome e preço)

curl -vX POST -H "Content-type: application/json" -d '{"nome": "Detergente Ypê", "preco": "1.49"}' http://localhost:8080/api/produto

Listar todos os produtos cadastrados

curl -vX GET http://localhost:8080/api/produto

Deletar um produto específico

curl -vX DELETE http://localhost:8080/api/produto/1

Atualizar um produto específico

curl -vX PUT -H "Content-type: application/json" -d '{"preco": "2.49"}' http://localhost:8080/api/produto/1

Criar carrinho de compras vazio

curl -vX POST -H "Content-type: application/json" -d '{}' http://localhost:8080/api/carrinho

Listar carrinhos de compras cadastrados

curl -vX GET http://localhost:8080/api/carrinho

Listar produtos de um carrinho específico

curl -vX GET http://localhost:8080/api/carrinho/1/produtos

Limitações

  • Algumas funcionalidades sugeridas não foram implementadas.

Melhorias futuras

  • Desenvolver testes unitários.
  • Autenticação com Spring Security.
  • Particionar endpoints de acordo com funcionalidade, com o intuito de torná-los entradas para microsserviços de produtos, cupons etc.
  • Utilização de base de dados standalone, sem descartar o Apache Derby.
  • Inclusão do serviço Swagger para guiar definição da API e endpoints

Bugs

  • Em breve...

Licença

Copyright © 2020 Elmon Noronha

This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0.

This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version, with the GNU Classpath Exception which is available at https://www.gnu.org/software/classpath/license.html.

About

RESTful API para serviço de carrinho de compras

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages