Repositório para o Back-end do projeto da disciplina de Projeto de Software
Explicação básica sobre o funcionamento da API.
-
A API Rest trata-se de mostrar as informações básicas sobre uma disciplina da UFCG, por enquanto apenas do Curso de Computação.
-
Algumas rotas são privadas, apenas usuário com
token
poderão fazer requisições. Caso não tenham, terão que se cadastrar e depois realizar o login, essa última irá retornar umtoken
no corpo da resposta. -
Existe uma rota:
/v1/disciplina/admin
que é usada para cadastrar todas as disciplinas e juntamente criando os perfis das mesmas. A rota recebe uma lista com os nomes das disciplinas. -
Um usuário autenticado consegue: Criar comentários, responder comentários, curtir(descurtir) os perfis, fazer listagens dos perfis por quantidade de likes e por comentários. Todas as rotas necessitam que o
token
seja passado noheader
da requisição. -
Um usuário não autenticado: Consegue apenas listar as disicplinas(não consegue ver os perfis).
Rotas da API Rest.
Rota | Método | Função | Parâmetros |
---|---|---|---|
/v1/comentario/{id}/{email} | POST | Cria um comentário no perfil especificado pelo ID | id: Id do perfil, email: Email do usuário |
/v1/comentario/usuario/{email} | GET | Retorna todos os comentários de um usuário | email: Email do usuário |
/v1/comentario/respostas/{id}/{email} | GET | Retorna as respostas de um comentário | id: id do comentário, email: Email do usuário |
/v1/comentario/responderComentario/{idComentario}/{email} | POST | Cria resposta de um comentário | id: id do comentário, email: Email do usuário |
/v1/comentario/apagarComentario/{idPerfil}/{idComentario}/{email} | DELETE | Apaga um comentário de um perfi | idPerfil: id do perfil, idComentario: id do comentário, email: email do usuário que quer apagar o comentário. |
Rota | Método | Função | Parâmetros |
---|---|---|---|
/v1/disciplina/ | GET | Retorna todas as disciplinas | |
/v1/disciplina/{id} | GET | Retorna uma discicplina pelo ID | id: id da disciplina |
/v1/disciplina/buscar/{query} | GET | Retorna as disciplinas por substring | query: substring a ser procurada |
/v1/disciplina/ | POST | Cria uma disciplina | |
/v1/disciplina/admin | POST | Cria várias disciplinas | |
/v1/disciplina/{id} | DELETE | Apaga uma disciplina | id: id da disciplina a ser deletada |
Rota | Método | Função | Parâmetros |
---|---|---|---|
/v1/login/ | POST | Realiza um login de um usuário |
Rota | Método | Função | Parâmetros |
---|---|---|---|
/v1/perfil/ | GET | Retorna todos os perfis | |
/v1/perfil/buscar/{query} | GET | Retorna todos os perfis por substring | query: substring a ser procurada |
/v1/perfil/curtir/{id}/{email} | POST | Cria um like no perfil | id: id do perfil, email: email do usuário a dar o like |
/v1/perfil/ordenarPorComentarios | GET | Retorna perfis ordenados por quantidade de comentários | |
/v1/perfil/ordenarPorLikes | GET | Retorna perfis ordenados por quantidade de like | |
/v1/perfil/{idDisciplina} | POST | Cadastra um perfil | idDisciplina: id da disciplina |
/v1/perfil/{id}/{email} | GET | Retorna um perfil pelo id | id: id do perfil, email: email do usuário |
Rota | Método | Função | Parâmetros |
---|---|---|---|
/v1/usuario/ | POST | Cria um usuário | |
/v1/usuario/{email} | DELETE | Apaga um usuário | |
/v1/usuario/{email} | GET | Retorna um usuário pelo email |
Explicação básica de cada diretório.
-
./authentication
: Onde os arquivos de Filtragem de token ficam, cada requisição feita irá passar pela classeTokenFilter
para ser realizado a verificação dotoken
-
./config
: Onde encontra apenas um arquivo, responsável pela configuração da documentação da API, Swagger. -
./controllers
: Onde encontra-se todos os meus controles da aplicação, todas as rotas possiveis estão descritas nos meus controles. -
./exceptions
: Onde estão as minhas exceções, e padronização das minhas Exceções para oresponse
-
./ models
: Onde estão os meus modelos, com a anotaçãoEntity
, tornando elas uma entidade no meu banco de dados. -
./ordenation
: Onde estão as classes de ordenação de meus perfis. -
./repository
: Onde estão os meusDAO
(Data Access Object ou Objeto de Acesso a Dados). Onde seu principal objetivo é separar regras de negócio de regras de acesso a banco de dados. -
./services
: Onde estão meus servições de cadaDAO
da minha aplicação. Onde irá ocorrer cada verificação ou regra de negócio antes de chamar algum método do meuDAO
. -
./utils
: Onde está minha classe responsável por enviar um email para o usuário após ele se cadastrar.
Caso vá usar a URL do heroku, as disicplinas e perfis já estão criadas.
-
Antes de tudo devemos criar um usuário pela rota:
/v1/usuario/
, passando no body da requisição:{ "email": "string", "primeiroNome": "string", "senha": "string", "ultimoNome": "string" }
-
Após a criação, devemos realizar o login, para termos o nosso
token
, pela rota:/v1/login/
, passando no body da requisição:
{
"email": "string",
"senha": "string",
}
-
Após isso devemos cadastrar nossas disciplinas: encontra-se no arquivo. Pode ser cadastradas pela rota:
/v1/disciplina/admin
. Passando no corpo da requisição o contéudo do arquivo acima, passando otoken
na requisição(no header). -
Depois disso, poderá ser realizado todas as demais funcionalidades do sistema: Criar outros usuários, cadastrar disciplinas, ver perfis e suas informações, comentar, responder, curtir e etc.