TI-UNICESUMAR / 2024-desafio-profissional-v-ESOFT5S-B

11 stars 6 forks source link

Relatório de melhorias para API da aula do dia 13-03-2024 #7

Open ThiagoBussola opened 3 months ago

ThiagoBussola commented 3 months ago

Termine as operações de CRUD da book API e escreva um relatório e aponte as melhorias necessárias para que a API fique mais consistênte e profissional. Lembre-se de apontar o que mudou, como melhorar e a fonte desta informação.

rmcampigotto commented 3 months ago

Primeiramente, adicionei o arquivo .gitignore e no mesmo coloquei a pasta node_modules, visto que ela seria muito pesada para importar para o repositório. Após isso, realizei a criação da função FindByID e FindAll, que retorna um registro pelo id dele e retorna full respectivamente, seguindo no CRUD, criei a função Update utilizando a função findByIdAndUpdate do Mongoose e a função Delete utilizando findByIdAndDelete também do Mongoose.

Utilizando export default new BookService() eu removi a necessidade de instanciar toda vez que iriamos chamar uma função do Service. Fazendo isso, utilizando um nome de variável na hora do import (exemplo: bookService) consegui utilizar sem ter de ficar instanciando a toda nova função que eu iria executar. Adicionei também try/catch em todas as requisições para tratamento de erros.

Links: https://mongoosejs.com/docs/api/model.html#Model.findByIdAndUpdate() https://mongoosejs.com/docs/api/model.html#Model.findByIdAndDelete() https://expressjs.com/en/guide/routing.html https://mongoosejs.com/docs/api/model.html#Model.findById()

Repositório: https://github.com/rmcampigotto/esoft5sb-dpV/tree/main/aula02

RA: 22014205-2

diogo-cedran commented 3 months ago

Foi adicionado a pasta node_modules, mas por ser pesada foi excluída da subida para o repositório. Foram criados e atualizados o CRUD, utilizando as funções FindByID e FindAll para a busca de registros por ID e a listagem de todos os registros. Além disso, as funções Update e Delete foram desenvolvidas, utilizando os métodos findByIdAndUpdate e findByIdAndDelete do Mongoose. Para otimização, a instância do BookService foi exportada para evitar a necessidade de instanciá-la sempre que for utilizada, e o tratamento de erros foi adicionado try/catch em todas as requisições.

Links: https://mongoosejs.com/docs/api/model.html#Model.findById() https://mongoosejs.com/docs/api/model.html#Model.findAll() https://mongoosejs.com/docs/api/model.html#Model.findByIdAndUpdate() https://mongoosejs.com/docs/api/model.html#Model.findByIdAndDelete()

Repository: https://github.com/diogo-cedran/desafio-profissional/tree/main/CRUD%20API%20book

Rafael-Days commented 3 months ago

-Adicionei os métodos getById, getAll, update e delete junto do método create em BookController. Em routes.ts adicionei os caminhos dos novos métodos.

-Em BookService, fiz com que as variáveis dos métodos pasassem um tipo, como o professor aconselhou em aula (não passar book: any em todos os métodos).

-Em BookService, usei findByIdAndUpdate() e findByIdAndDelete() em update e delete.

-Para não precisar instanciar um novo BookService() em todos os métodos, em BookController criei um construtor que instanciou BookService() e utilizei ele nos métodos.

-Dentro dos métodos assincronos de BookController, adicionei try cacth, para caso acontecesse um erro, retorná-lo.

Para essa atividade, utilizei os seguintes sites: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch

https://www.typescriptlang.org/pt/play#example/async-

https://mongoosejs.com/docs/api/model.html#Model.findByIdAndUpdate()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await

Repositório: https://github.com/Rafael-Days/bookBussola

IgorBondezam commented 3 months ago

Atividade - 13/03/2024 - R.A.: 22012574-2

Para finalização e melhoria da atividade fiz os seguinte itens:

Links

//https://stackoverflow.com/questions/10563644/how-to-specify-http-error-code-using-express-js //https://mongoosejs.com/docs/queries.html //https://javascript.info/custom-errors //https://javascript.info/import-export

Repositório

https://github.com/IgorBondezam/esoft5b_dp/tree/master/atividade-13-03-2024-API-typescript

B0nam commented 3 months ago

Atividade - 13/03/2024 - Daniel Bonam Rissardi (RA: 22013838-2)

Relatório referente à realização da atividade proposta no dia 13/03/2024. Abaixo serão descritas algumas melhorias aplicadas ao projeto Book API.

Contêiner MongoDB

Pensando em facilitar o deployment do banco de dados, foi gerada uma imagem Docker para a criação de um contêiner MongoDB com as configurações do projeto já iniciadas.

O contêiner encontra-se na pasta Docker, fora da pasta do projeto. Para iniciar o banco de dados já configurado, basta executar o script ./run.sh, o qual irá gerar uma nova imagem com base no Dockerfile e iniciará o banco. O banco de dados é temporário; assim que o contêiner for encerrado, todos os dados serão perdidos.

O arquivo app.ts foi atualizado para utilizar as credenciais do contêiner MongoDB:

await mongoose.connect('mongodb://mongouser:Abacate123@0.0.0.0:27017/esoft5s-books');

Adicionado .gitignore

Foi adicionado o .gitignore para remover arquivos desnecessário do repositório, foi utilizado um template presente no repositório oficial do Github.

Operações de CRUD

Como solicitado, foram realizadas as operações de Criação, Leitura, Atualização e Remoção. As rotas existentes no projeto são:

Tratamento básico de exceções

Foram adicionados tratamentos de exceções try/catch nos métodos presentes em book.controller.ts. Embora sejam tratamentos básicos que fornecem pouca ou nenhuma informação de erro, este tratamento permite que a aplicação continue funcionando quando se depara com algum erro. Sem este tratamento, a aplicação iria parar em caso de exceções.

Redundância em book.controller.ts

Foi corrigida a redundância existente na classe BookController, onde para cada método era instanciado um novo BookService. A solução utilizada foi realizar o import da classe BookService já instanciada. Isto foi realizado por meio da seguinte linha presente em book.service.ts:

export default new BookService();

Links

Repositório

https://github.com/B0nam/ESOFT5S-B-NODE/tree/main/2024-03-13

Felipe-Tomazoti commented 3 months ago

Atividade - 13/03/2024 - R.A.: 22019977-2

Finalização do CRUD perante ao código passado em aula !. Funções adicionadas:

Otimização do Código

  1. Tratamento de exceções : No nosso arquivo: 'book.controller.ts' e 'book.service.ts', foi adicionado o tratamento com try-catch!, isso faz com que o nosso código fique muito mais compreensivo, e nos ajuda a tratar os erros de maneira eficiente, fazendo com que nós não percamos tempo procurando aonde fazer a manutenção no código!.

  2. Retorno com status : Em todas as operações pertencentes, eu inclui um retorno de status específico para cada operação, fazendo com que a interpretação se torne cada vez mais fácil perante ao usuário.

  3. Arquivo: .gitignore : Foi adicionado no projeto um arquivo chamado: .gitignore, e o conteúdo desse arquivo é os módulos do node (node_modules), e isso foi necessário pois esse arquivo ficará muito grande com o tempo, sem contar que é mais fácil e seguro baixar os pacotes atualizados utilizando o NPM.

Links:

Repositório:

https://github.com/Felipe-Tomazoti/Desafio_Profissional

GabrielBitten commented 3 months ago

Atividade 13/03/2024 - Gabriel Bittencourt Camillo de Souza(RA-22257558-2)

Foi feito o CRUD completo no projeto, os seguintes métodos foram implementados:

Como boa prática, em cada um dos métodos foi usado o tratamento de excessões(try catch) com retorno de 500 em caso de falhas, foi criado um arquivo .gitignore, onde a pasta node_modules é excluída do controle de versão do git, resultando em um repositório mais leve e limpo.

Sites utilizados: https://stackoverflow.com/questions/52467266/nodejs-try-catch-and-res-status-usage https://www.alura.com.br/artigos/async-await-no-javascript-o-que-e-e-quando-usar https://mongoosejs.com/docs/api/model.html#Model.findByIdAndUpdate() https://kb.objectrocket.com/mongo-db/mongoose-delete-many-724 https://www.atlassian.com/br/git/tutorials/saving-changes/gitignore

Repositório: https://github.com/GabrielBitten/Desafio-profissional

junior-calado commented 3 months ago

Iniciei implementando atualizações no CRUD para incluir operações adicionais, como Update e Delete. Além disso, adicionei métodos FindByID e FindAll para oferecer uma gama mais ampla de possibilidades de busca. Para lidar com erros nas requisições, optei por utilizar blocos Try/catch.

Além das modificações no código, também criei um arquivo .gitignore para evitar a inclusão desnecessária da pasta inteira ao clonar, fazer pull e push do projeto.

Referências úteis para minha implementação incluem:

Meu repositório:

Hudson-Matias commented 3 months ago

Hudson Matias - 22045746-2

Ao implementar o CRUD por find by id, update e delete, consegui fazer um retorno com try catch com os devidos http para cada um, retorno de 200, 201 e por assim em diante.

Não utilizei o .gitignore como sugerido em sala de aula. E também tive ajuda do chatgpt mas ele não me retornou os sites que ele utilizou.

Alguns dos sites de pesquisa abaixo:

Link do repositório:

https://github.com/Hudson-Matias/Desafio-Profissional-5-Semestre/tree/main/desafio-aula-13-03-2024

AndreVassoler commented 3 months ago

Um CRUD foi desenvolvido em sala, inicialmente incluindo apenas a funcionalidade de criação (create). Posteriormente, foram implementadas as operações de busca por ID (getById), listagem de todos os registros (findAll), atualização (update) e exclusão (delete) para completar todas as operações do CRUD. No entanto, devido ao tamanho considerável, a pasta node_modules precisou ser excluída para permitir o envio do projeto para o GitHub. Além disso, foi aplicado um tratamento de exceção (try-catch) para lidar com possíveis erros durante a criação, atualização ou busca por ID de um livro, garantindo um retorno adequado em caso de falhas.

Links:

Repositório:

alison-luiz commented 3 months ago

Atividade 13/03/2024 - R.A.: 22033281-2

Foi feito uma implementação padrão de um CRUD para o catálogo de livros, com algumas melhorias, como, implementação do bloco try/catch para tratamento dos erros, ajuste no arquivo controller para remover a criação repetida de instâncias da classe BookService. Segue abaixo os endpoint criados:

Pontos de melhoria para ficar mais consistente e profissional:

Links:

Repositório:

https://github.com/alison-luiz/esoft_dp_v/tree/master/Books

Lucasszsd commented 3 months ago

Foram implementados os ajustes para inserção de try/catch e a quantidade de vezes que são instanciados os objetos para melhoria de performance melhorias que poderiam ser realizadas, a tratativa de dados de entrada para verificação de conformidade dos mesmos, bem como os arquivos de competência do node, serem inseridos no gitignore para melhor fluxo de trabalho

Fontes :

https://www.atlassian.com/br/git/tutorials/saving-changes/gitignore https://mongoosejs.com

Repositório :

https://github.com/Lucasszsd/esoftb/tree/main/13-03-2024

Nome : Lucas Dutra Braga RA : 22023711-2

Matheus-Zauza-Maschietto commented 3 months ago

Melhorias

Fontes

Repositório

matheushb commented 3 months ago

Matheus Hoegen Baraldi - RA 22158952-2

Repositorio: https://github.com/matheushb/express-book-crud

Melhorias:

fontes:

VladeJr commented 3 months ago

Vlademir Junior RA: 22014195-2

Método create: O objetio era adicionar um novo livro ao banco de dados, recebendo os dados do livro através do corpo da requisição (req.body) e utilizando o BookService para criar um novo registro no banco de dados. Método getById: Obter um livro específico pelo seu ID, extraindo o ID do livro da URL da requisição (req.params.id) e consulta o banco de dados para encontrar o livro correspondente. Método update: Atualizar os dados de um livro existente, recebendo o ID do livro e os novos dados através da requisição e atualiza o registro correspondente no banco de dados. Método deleteBook: Serve para remover um livro do banco de dados pelo seu ID, ele usa o ID fornecido na URL da requisição para localizar e deletar o livro no banco de dados.

Foram adicionados os blocos try-catch para o tratamento de erro em aplicações web.

Fontes: https://stackoverflow.com/questions/22009364/is-there-a-try-catch-command-in-bash https://mongoosejs.com/docs/typescript.html

Link repositório: https://github.com/VladeJr/AtivDesafioV-13-03/tree/main

AlissonKobayashi commented 3 months ago

Alisson Segura Kobayashi - RA: 22210867-2

Criei a função findAll e findById, onde uma vai listar todos os livros cadastradas e a outra ira listar apenas o livro de determinado id, após isso foram criados o create: onde eu irei adicionar novos livros, o update: onde posso atualizar os livros já existente, e por fim o delete: onde posso deletar determinado livro de acordo com o Id. Também foi adicionado o try/catch em todas as funções, para lidar com as exceptions durante a execução do código.

Fonte: https://mongoosejs.com/docs/api/model.html#Model.find() https://mongoosejs.com/docs/api/model.html#Model.findById() https://mongoosejs.com/docs/api/model.html#Model.create() https://mongoosejs.com/docs/api/model.html#Model.findByIdAndUpdate() https://mongoosejs.com/docs/api/model.html#Model.findByIdAndDelete()

Link do repositório: https://github.com/AlissonKobayashi/esoft5s-b-df/tree/main

BielMaiolli commented 3 months ago

Gabriel Vinicius Maiolli 22120200-2

Desenvolvi duas funções chamadas findAll e findById. A primeira função, findAll, tem como objetivo exibir uma lista de todos os livros cadastrados, enquanto a segunda, findById, retorna apenas o livro correspondente a um ID específico. Posteriormente, criei a função create, que permite adicionar novos livros ao sistema, e a função update, que possibilita a atualização de informações sobre os livros já existentes. Por último, implementei a função delete, que permite a remoção de um livro específico com base no seu ID, todos esses endpoints estão conectados ao banco de dados.

Fontes: https://mongoosejs.com/docs/guide.html https://stackoverflow.com/questions/25623041/how-to-configure-dynamic-routes-with-express-js

Link do repositorio: https://github.com/BielMaiolli/Type_Crud_Completo

rodrigopinesso commented 3 months ago

Rodrigo Yaedu Pinesso RA: 22014201-2

Fiz as funções FindAll e FindById, nas quais me permite pesquisar todos ou separadamente os livros no banco de dados do sistema, também foi feita a função Delete, na qual me permite apagar Ids do sistema e a Update, na qual me permite atualizar e alterar as informações de um Id e foi inserida no sistema a função Create, na qual permite colocar mais itens no banco de dados.

Fontes:

Repositório:

Muriloapv commented 2 months ago

Murilo Alves Pereira Varoto Ra_2221590-2

No projeto, foi implementado um CRUD completo, oferecendo os seguintes métodos: create: Este método cria um novo livro. findById: Permite buscar um livro pelo seu ID. findAll: Recupera todos os livros existentes. update: Atualiza um livro com base no seu ID. deleteById: Remove um livro com base no seu ID. deleteAll: Remove todos os livros do sistema.

Para garantir boas práticas de desenvolvimento, cada um desses métodos inclui tratamento de exceções (utilizando try-catch), com retorno de status 500 em caso de falha. Além disso, foi criado um arquivo .gitignore para excluir a pasta node_modules do controle de versão do Git, resultando em um repositório mais leve e organizado

https://www.typescriptlang.org/pt/play#example/async- https://mongoosejs.com/docs/queries.html https://javascript.info/import-export https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

https://github.com/Muriloapv/DesafioProfV