Skip to content

adilson-vieira/aluraflix-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#aluraflix-backend

Desenvolvimento de uma API REST para o evento Alura Challenge Back-end em julho/agosto de 2021. A proposta do projeto é o desenvolvimento da primeira versão de uma plataforma para compartilhamento de vídeos.

Requisitos

O projeto utiliza maven, openJDK versão 11 com o framework spring boot versão 2.5.2 e banco de dados mariadb versão 15.1. A autenticação é feita com o JWT versão 0.9.1.

Projeto e Descrição da API

1) Baixe o projeto a partir deste repositório.

No shell do linux, digite o comando:
$ git clone https://github.com/adilson-vieira/aluraflix-backend.git

Importe o projeto para o ambiente de desenvolvimento (IDE) de sua preferência. As dependências serão satisfeitas conforme declaradas no arquivo de projeto pom após a importação.

2) Crie o banco de dados no mariadb.

No shell do linux, digite os comandos:

$ mariadb -u root -p // abre o prompt do mariadb
MariaDB [(none)]> create database aluraflix; // cria a base de dados "aluraflix"
MariaDB [(none)]> use aluraflix; // muda para base de dados recém criada
Database changed
MariaDB [aluraflix]>

Altere as informações de usuário, senha, nome da base de dados no arquivo application.properties caso necessário.

3) Populando o banco com alguns vídeos para testes:

Para poder utilizar a API é necessário criar pelo menos um usuário na aplicação. No prompt do MariaDB, digite:
INSERT INTO usuarios(nome, email, senha) VALUES('usuario teste', 'usuario@email.com', '$2a$10$Z8OdeTS6NgbFpk/S5xcOS.iJwmW/T9nT0ihNT5eUCS7i.xD.NEh12');

Será criado um usuario teste com a senha 1234.

A autenticação na API é feita através de POST /videos/auth com o seguinte json no payload de body:
{
     "usuario": "usuario@email.com",
    "senha": "1234"
}

O restante deste tópico é opcional. Caso queira, utilize as funcionalidades disponíveis na API conforme o tópico 4.

No prompt do mariadb digite a sequência de comandos abaixo. Esses registros podem servir para apresentação da API bem como para os testes.

Tabela de videos:

INSERT INTO videos(titulo, descricao, url, categoria_id) VALUES("Como Funcionam Os Emuladores com Fábio Akita","descrição do video aqui", "https://www.youtube.com/watch?v=9qx7qjKhJ1Q", 1);

INSERT INTO videos(titulo, descricao, url, categoria_id) VALUES("O que é Data Science?","descrição do video aqui", "https://www.youtube.com/watch?v=5b9Z8toVaAU", 1);

INSERT INTO videos(titulo, descricao, url, categoria_id) VALUES("O que é SQL e NoSQL?","descrição do video aqui", "https://www.youtube.com/watch?v=aure5d3B88g", 1);

INSERT INTO videos(titulo, descricao, url, categoria_id) VALUES("O que é o C#?","descrição do video aqui", "https://www.youtube.com/watch?v=yj0FR_gm0sM", 1);

INSERT INTO videos(titulo, descricao, url, categoria_id) VALUES("Quatro Mitos sobre Programação","descrição do video aqui", "https://www.youtube.com/watch?v=yj0FR_gm0sM", 1);

Tabela de categorias:

Por convenção o id = 1 possui o atributo titulo = "LIVRE". Insira novas categorias com o comando: INSERT INTO categorias(titulo, cor) VALUES("nome_da_categoria", "#cor_em_hexadecimal")

4) Descrição da API:

Videos:

GET /videos Lista todos os vídeos ou retorna a lista vazia. Retorna um http status code 200 se a requisição obteve sucesso ou http status code 204 se a lista está vazia.

GET /videos/pagina?pagina=_ &qtd=_ Lista os vídeos por paginacão e retorna a página com a quantidade de vídeos de acordo com os valores dos parâmetros pagina e qtd ou retorna a página com a lista vazia. Retorna um http status code 200 se a requisição obteve sucesso ou http status code 204 se a lista está vazia.

GET /videos/{id} Busca um determinado vídeo por seu id. Retorna um http status code 200 se a requisição obteve sucesso ou http status code 404caso não encontrado.

GET /videos/?search=_ Pesquisa o valor informado em search nos títulos dos vídeos e retorna uma lista com as correspondências dos vídeos ou retorna a lista vazia caso não encontrada alguma correspondência. Retorna um http status code 200 se a requisição obteve sucesso ou http status code 204 se a lista está vazia.

POST /videos Cadastra um json com titulo, descricao e url como payload de body. Retorna um http status code 201 se a requisição obteve sucesso. Exemplo do json:
{
     "titulo": "título do novo vídeo",
    "descricao": "descrição do novo vídeo",
    "url": "https://www.youtube.com/watch?v=code_here"
}

DELETE /videos/{id} Exclui um determinado vídeo informando o id. Retorna um http status code 200 se a requisição obteve sucesso ou http status code 404 caso contrário.

PUT /videos/{id} Atualiza um vídeo e utiliza um json com titulo, descricao e url como payload de body. Retorna um http status code 200 se a requisição obteve sucesso ou http status code 404 caso contrário. Exemplo do json:
{
     "titulo": "novo título do vídeo",
    "descricao": "nova descrição do vídeo",
    "url": "https://www.youtube.com/watch?v=code_here"
}

Categorias:

GET /categorias
GET /categorias/{id}
GET /categorias/{id}/videos
POST /categorias
PUT /categorias/{id}
DELETE /categorias/{id}

Relatorios:
GET /categorias/relatorios

5) Testes

Os testes das requisições foram executados utilizando o Postman.

About

Projeto desenvolvido para o Alura Challenge Back-end

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages