Code Monkey home page Code Monkey logo

rdswithapirest's Introduction

Hi there 👋

Computador

I'm Juliana Mascarenhas, and I've been working in the IT field since 2010. Nowadays I'm working on the data field focus on data engineering and analyis. I have a master degree in a specific area of expertise, modeling with Network Data Science. I'm also a tech instructor and content creator on Youtube channels SR and SP.

We alredy pass the ✨ 12k ✨ in the Simplificando Redes on the Youtube. We just simplify computing issues such as: docker, python, database, sql, nosql, linux, infrastructure, rabbitmq, cybersecurity and others.

So... you can see now that I love contributing to the community by creating articles, videos and sharing valuable information about IT careers. For more information access the links bellow.

rdswithapirest's People

Contributors

julianazanelatto avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

rdswithapirest's Issues

Algumas Observações sobre o Projeto.

Olá tudo bem , eu fiz o Bootcamp DIO Pan e fiz o modulo do RDS com HATEOAS , conclui o projeto e gostei muito das aulas porém quero pontuar alguns pontos, a primeira observação foi no LoadDBHateoas.java
No codigo feito em aula nos videos vc colocou a anotação @Autowired quando estava mostrando o loadOrder, na verdade a anotação e @bean por isso não funcionou no video, onde vc acbou juntando os dois num mesmo metodo. Eu fiz dessa forma abaixo e funcionou muito bem.

@Configuration
public class LoadDBHateoas {

    private static final Logger log = LoggerFactory.getLogger(LoadDBHateoas.class);

    @Bean
    CommandLineRunner loadEmployees(EmployeeRepositoryHateoas employeeRepositoryHateoas){
        return args -> {
            log.info("Log of event save user 1: "+ employeeRepositoryHateoas.save(new EmployeeHateoas("Claudio","ADMIN","Rua jupi 215")));
            log.info("Log of event save user 1: "+ employeeRepositoryHateoas.save(new EmployeeHateoas("Clovis","USERS","Avenida Joao Dias, 3000")));
        };
    }

    @Bean
    CommandLineRunner loadOrder(OrderRepositoryHateoas orderRepository){
        return args -> {
            orderRepository.save(new OrderHateoas(Status.COMPLETED, "Completo"));
            orderRepository.save(new OrderHateoas(Status.IN_PROGRESS, "Em Progresso"));
            orderRepository.save(new OrderHateoas(Status.IN_PROGRESS, "Em Progresso"));
            orderRepository.findAll().forEach(order -> {
                log.info("Preloaded" + order);
            });
        };
    }
}

Outro ponto foi nos controllers de Order e Employee

no seu codigo vc cria uma Exception para Employee e Order, porém ao fazer validações via postman com get quando dava que não foi encontrado o postman não exibia nenhuma mensagem personalizada. somente quando se fazia uma alteração via PUT com id invalido, verifiquei que no seu codigo vc não colocou o orElseThrow apontado para a Exception personalizada nos GetMappings vc apenas chamou o status httpStatus.NOT_FOUND , além disso o Optional não seria necessário usando com orElseThrow, evitando o if e reduzindo codigo. Na minha implementação fiz dessa forma.

@GetMapping("/employee/{id}")
    public ResponseEntity<EmployeeHateoas> consultByID(@PathVariable Long id){
        EmployeeHateoas employee = repositoryEmployee.findById(id).orElseThrow(() -> new EmployeeNotFoundExceptionHateoas(id));
            employee.add(linkTo(methodOn(EmployeeControllerHateoas.class).listOfEmployeeAll()).withRel("All employees"));
            return new ResponseEntity<>(employee, HttpStatus.OK);
    }

funciona bem e exibe a mensagem de erro de employee not found. o mesmo feito com order.

@GetMapping("orders/{id}")
   ResponseEntity<OrderHateoas> consultOneOrder(@PathVariable Long id){
       OrderHateoas order = repositoryOrder.findById(id).orElseThrow(()-> new OrderNotFoundExceptionHateoas(id));
       order.add(linkTo(methodOn(OrderControllerHateoas.class).consultOrderAll()).withRel("All orders"));
       return new ResponseEntity<>(order,HttpStatus.OK);
   }

Espero ter contribuido de alguma forma. Abraços.

Inclusão Anotação @PathVariable - Classe EmployeeControllerHateoas.java

Olá Juliana,

Ao tentar realizar teste no postman com o método PUT implementado na Classe EmployeeControllerHateoas.java
Estava ocorrendo erro me indicando que o ID que estava recebendo era NULL.
Então coloquei anotação @PathVariable no parâmetro ID do método replaceEmployee dessa forma.

@PutMapping("/employees/update/{id}")
    EmployeeHateoas replaceEmployee(@RequestBody EmployeeHateoas newEmployee, @PathVariable Long id){
        return repository.findById(id).map(employee -> {
            employee.setName(newEmployee.getName());
            employee.setAddress(newEmployee.getAddress());
            employee.setRole(newEmployee.getRole());
            return repository.save(newEmployee);
        }).orElseGet(() -> {
            newEmployee.setId(id);
            return repository.save(newEmployee);
        });

Dessa forma é realizada o update no banco com os dados passados no body da requisição.

Espero que agregue valor para a comunidade.

Parabéns pelo curso.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.