Rocketseat

Gerenciador de livraria

Gerenciador de livraria

Conheça o projeto

Construir uma API REST em .NET para gerenciar livros de uma livraria, com CRUD completo, validações, documentação via Swagger e herança entre classes para organizar o domínio.

Instruções

Estrutura, regras e requisitos do projeto

1. Requisitos

  • Deve ser possível criar um livro;
  • Deve ser possível visualizar todos os livros que foram criados;
  • Deve ser possível visualizar um livro em específico;
  • Deve ser possível editar informações de um livro;
  • Deve ser possível excluir um livro.

Campos obrigatórios

CampoTipoObrigatórioRegras/Validações
idGUIDSimGerado automaticamente pelo sistema.
titlestringSimDeve ter entre 2 e 120 caracteres.
authorstringSimDeve ter entre 2 e 120 caracteres.
genrestringSimDeve ser um dos valores válidos: ficção, romance, mistério, ....
pricedecimalSimDeve ser maior ou igual a 0.
stockintSimDeve ser maior ou igual a 0.

Regras de negócio

  • title e author não devem existir duplicados;
  • price não pode ser negativo;
  • stock não pode ser negativo;
  • genre deve estar numa lista de gêneros válidos.
  • Quando o livro é criado, preencher CreatedAt em alterações, atualizar UpdatedAt.

Endpoints

  • Crie todos os endpoints necessários;
MétodoEndpointDescrição
POST/api/booksCriar um novo livro.
GET/api/booksListar todos os livros (com filtros opcionais).
GET/api/books/{id}Buscar um livro pelo ID.
PUT/api/books/{id}Atualizar informações de um livro.
DELETE/api/books/{id}Excluir um livro da livraria.

Status Code

  • Retorne status code apropriados pra cada situação:
StatusQuando usarDescrição
200Consultas e atualizaçãoRequisição bem-sucedida, dados retornados.
201Criação de novo recursoRecurso criado com sucesso.
204Exclusão ou atualizaçãoOperação concluída sem conteúdo para retornar.
400Validações inválidas ou dados incorretosRequisição malformada ou campos inválidos.
404Recurso não encontradoID ou rota não corresponde a nenhum recurso.
409Conflito de dadosConflito com dados já existentes.
500Erro inesperado no servidorExceções não tratadas ou falhas internas.

2. Desenvolvendo o projeto

Para desenvolver esse projeto, recomendamos utilizar as principais tecnologias que utilizamos durante o desenvolvimento do primeiro módulo da formação.

Caso você tenha alguma dificuldade você pode ir no nosso fórum e deixar sua dúvida por lá!

Após terminar o desafio, caso você queira, você pode tentar dar o próximo passo e deixar a aplicação com a sua cara. Tente mudar o layout, cores, ou até adicionar novas funcionalidades para ir além! 🚀


3. Entrega

Após concluir o desafio, você deve enviar a URL do seu código no Github.

Além disso, que tal fazer um post no LinkedIn compartilhando o seu aprendizado e contando como foi a experiência? É uma excelente forma de demonstrar seus conhecimentos e atrair novas oportunidades!

Obs: Se você se sentir à vontade, pode postar um print do resultado final e nos marcar! Vai ser incrível acompanhar a sua evolução! 💜


4. Considerações finais

Lembre-se que o intuito de um desafio é te impulsionar, por isso, dependendo do desafio, pode ser que você precise ir além do que foi discutido em sala de aula. Mas isso não é algo ruim: ter autonomia para buscar informações extras é uma habilidade muito valiosa e vai ser ótimo pra você treinar ela aqui com a gente!

E lembre-se: tenha calma! Enfrentar desafios faz parte do seu processo de aprendizado!

Se precisar de alguma orientação ou suporte, estamos aqui com você! Bons estudos e boa prática! 💜


Feito com 💜 por Rocketseat 👋

Tarefas

Use este checklist para ajudar a organizar a sua entrega

Projetos relacionados