Tabela de conteúdos
- ➤ Sobre o projeto
- ➤ Tecnologias utilizadas
- ➤ Descrição do projeto
- ➤ Instruções
- ➤ Requisitos realizados
- ➤ Requisito 1: Criação do endpoint GET `/talker`
- ➤ Requisito 2: Criação do endpoint GET `/talker/:id`
- ➤ Requisito 3: Criação do endpoint POST `/login`
- ➤ Requisito 4: Criação de validações para o endpoint `/login`
- ➤ Requisito 5: Criação do endpoint POST `/talker`
- ➤ Requisito 6: Criação do endpoint PUT `/talker/:id`
- ➤ Requisito 7: Criação de um endpoint DELETE `/talker/:id`
- ➤ Requisito 8: Criação de um endpoint GET `/talker/search`
- ➤ Créditos
Projeto desenvolvido durante a formação de BackEnd na Trybe com o intuito de consolidar o aprendizado de NodeJs utilizando o framework Express.
Descrição
Tem-se um arquivo (`talker.json`) que foi utilizado como base para fazer as requisições da API. Todas as operações de leitura e escrita foram realizadas neste arquivo usando métodos da biblioteca `fs`.
Neste projeto eu realizei:
- Desenvolvimento de uma API de um CRUD de palestrantes
- Desenvolvimento de endpoints que alteram um arquivo utilizando o módulo `fs`
Durante o desenvolvimento foi utilizado Docker.
- Clone o repositório
git clone [email protected]:Gabrielle-Murat/NodeJs-TalkerManager.git
- Entre na pasta do repositório que você acabou de clonar;
- Instale as dependências:
npm install
- Como restaurar o arquivo
talker.json
:
- Execute o comando:
npm run restore
- Para iniciar o servidor em modo de desenvolvimento:
- Execute o comando:
npm run dev
Criação da API:
1. Criar um endpoint para buscar todos os palestrantes cadastrados:
1.1. Retornar `status 200` e um array com todos os palestrantes cadastrados.
1.2. Caso não exista nenhum palestrante cadastrado: retornar `status 200` e um array vazio.
2. Criar um endpoint para buscar um palestrante por id:
2.1. Retornar `status 200` e um palestrante baseado no id da rota.
2.2. Caso não exista nenhum palestrante com o id da rota: retornar `status 404` e a mensagem "Pessoa palestrante não encontrada".
3. Criar um endpoint para fazer login:
3.1. O endpoint deve receber os campos `email` e `password` no corpo da requisição.
3.2. Retornar um token aleatório de 16 caracteres.
3.3. Retornar `status 200` e o token gerado.
3.4. O token retornado deve ser aleatório cada vez que o endpoint for acessado.
4. Validar os campos recebidos no corpo da requisição do requisito anterior:
4.1. Para campos inválidos: retornar `status 400` com a respectiva mensagem de erro.
4.2. O campo `email` é obrigatório e deve ser um email válido.
4.3. O campo `password` é obrigatório e deve ter no mínimo 6 caracteres.
5. Criar um endpoint para adicionar um novo palestrante ao arquivo de dados e validar os campos recebidos no corpo da requisição:
5.1. O corpo da requisição deve ter o mesmo formato de cadastro contido no arquivo `talker.json`.
5.2. A requisição deve ter o token no header, no campo `authorization`.
5.3. Caso o token não seja encontrado ou seja inválido: retornar `status 401` e a respectiva mensagem.
5.4. Para campos inválidos: retornar `status 400` com a respectiva mensagem de erro.
5.5. O campo `name` é obrigatório e deve ter no mínimo 3 caracteres.
5.6. O campo `age` é obrigatório e deve ser um inteiro maior ou igual a 18.
5.7. O campo `talk` é obrigatório e deve ser um objeto com as chaves `watchedAt` e `rate`.
5.8. O campo `watchedAt` é obrigatório e deve ter uma data no formato `dd/mm/aaaa`.
5.9. O campo `rate` é obrigatório e deve ser um inteiro de 1 a 5.
5.10. Retornar `status 201` e o palestrante que foi cadastrado.
6. Criar um endpoint para editar um palestrante cadastrado com base no id da rota:
6.1. O id registrado não deve ser alterado.
6.2. O corpo da requisição deve ter o mesmo formato de cadastro contido no arquivo `talker.json`.
6.3. A requisição deve ter o token no header, no campo `authorization`.
6.4. O token e os campos devem ser validados conforme o requisito 5.
6.5. Retornar `status 200` e o palestrante que foi editado.
7. Criar um endpoint para deletar um palestrante com base no id da rota:
7.1. A requisição deve ter o token no header, no campo `authorization`.
7.2. O token deve ser validado conforme o requisito 5.
7.3. Retornar `status 204` sem mensagem de resposta.
8. Criar um endpoint para buscar palestrantes que contenham em seu nome o termo pesquisado no queryParam da URL:
8.1. A requisição deve ter o token no header, no campo `authorization`.
8.2. O token deve ser validado conforme o requisito 5.
8.3. Caso o termo de busca esteja vazio: retornar `status 200` e um array contendo todos os palestrantes cadastrados.
8.4. Caso não exista nenhum palestrante cadastrado: retornar `status 200` e um array vazio.
8.5. Retornar `status 200` e um array de palestrantes que satisfaçam a busca.
Arquivo de cadastro de palestrantes (talker.json) e docker compose (docker-compose.yml) fornecidos pela Trybe.