/API-Rede-Social

API de uma rede social fictícia desenvolvida em node express

Primary LanguageJavaScript

API-Rede-Social

API de uma rede social fictícia desenvolvida em node-express

Neste sistema será elaborado uma API de uma rede social utilizando node express e mysql como banco de dados. O projeto tem como objetivo colocar todos os meus conhecimentos em javascript na prática, implementando todo o conhecimento estudado ao longo do ano.

Rodar localmente

Para rodar o projeto em sua máquina, você precisa ter instalado o banco de dados MySql e o NodeJs. Após isso basta entrar no editor de código instalado em seu computador e executar os seguintes comandos no terminal:

npm install
cd routes
nodemon routes

Tasks:

  • Login
  • Criar Conta
  • Feed
  • Publicar Postagem
  • Curtir Postagem
  • Editar Postagem
  • Banir/Desbanir Usuário (Administradores)
  • Comentar
  • Curtir Comentário
  • Comentários
  • Excluir Postagem
  • Editar Comentário
  • Apagar Comentário
  • Arquivar/Desarquivar Publicação do Usuário (Administradores e Moderadores)
  • Arquivar/Desarquivar Comentário do Usuário (Administradores e Moderadores)
  • QuemCurtiu

Todas as funcionalidades da API

Url's da aplicação

Feed - GET

Esta url retorna todas as postagens registradas no banco de dados, exceto aquelas que estiverem com status "ARQUIVADO". Caso você queira ver as postagens de um unico usuário, você pode informar o nome dele junto a url.

Se este usuário ainda não tiver publicado nenhuma postagem, o sistema retorna um código 200 informando que ele ainda não postou nada. Caso o usuário não exista, o sistema retorna um código 400 informando que o mesmo não foi encontrado.

http://localhost:3000/feed?usuario=

O sistema retorna uma coleção de arrays, onde cada array possui 2 sub-arrays, o primeiro mostrando as informações da postagem, além tambem do usuário que a publicou, e outro mostrando os comentários referentes a essa postagem, junto das informações da pessoa que fez o comentário.

[
    {
        Postagem: {
            idpostagem: $'ID DA POSTAGEM',
            titulo: $'TITULO DA POSTAGEM',
            conteudo: $'CONTEUDO DA POSTAGEM',
            dataPostagem: $'DATA DA POSTAGEM',
            dataultimaAlteracao: $'DATA ULTIMA ALTERACAO',
            numeroCurtidas: $'CURTIDAS DA POSTAGEM',
            statuspostagem: $'STATUS DA POSTAGEM',
            usuarioPublicador: {
                idUsuario: $'ID DO USUARIO',
                nome: $'NOME DO USUARIO',
                email: $'EMAIL DO USUARIO',
                datanascimento: $'DATA DE NASCIMENTO DO USUARIO',
                linkweb: $'LINK WEB DO USUARIO' 
            }
        },
        Comentarios: [
            {
                idcomentario: $'ID DO COMENTARIO',
                comentario: $'COMENTARIO',
                ultimaalteracao: $'DATA DA ULTIMA ALTERACAO',
                curtidas: $'CURTIDAS DO COMENTARIO',
                usuario: {
                    idusuario: $'ID DO USUARIO',
                    nome: $'NOME DO USUARIO',
                    email: $'EMAIL DO USUARIO',
                    datanascimento: $'DATA DE NASCIMENTO DO USUARIO',
                    linkweb: $'LINK WEB DO USUARIO' 
                }
            }
        ]
    }
]

Buscar Comentarios - GET

Assim como o Feed, a funcionalidade de buscar comentários lista todos os comentários existentes no banco de dados e retorna apenas aqueles com status 'ATIVO', a url pode receber uma query que serve como filtro, logo, se você quiser procurar os comentários de um usuário em expecífico, basta colocar o nome do usuário ao final da url.

http://localhost:3000/comentarios/buscar?usuario=

A API retorna um array com todos os comentários registrados no banco de dados, ou se você colocou o nome de um usuário, apenas os comentários escritos por ele. Caso você informe um nome que não se encontra no banco de dados, um código 400 é retornado, o mesmo acontece se este usuario ainda não tiver feito nenhum comentário.

[
    {
        idcomentario: $'ID DO COMENTARIO',
        comentario: $'COMENTARIO',
        datapublicacao: $'DATA DE PUBLICACAO',
        dataatualizacaocomentario: $'DATA ULTIMA ALTERACAO',
        curtidas: $'NUMERO DE CURTIDAS',
        statuscomentario: $'STATUS COMENTARIO',
        usuariocomentador: {
            idUsuario: $'ID DO USUARIO',
            nome: $'NOME DO USUARIO',
            email: $'EMAIL DO USUARIO',
            datanascimento: $'DATA DE NASCIMENTO DO USUARIO',
            linkweb: $'LINK WEB DO USUARIO'
        },
        postagem: {
            idpostagem: $'ID DA POSTAGEM',
            titulo: $'TITULO DA POSTAGEM',
            conteudo: $'CONTEUDO DA POSTAGEM',
            dataPostagem: $'DATA DA POSTAGEM',
            dataultimaAlteracao: $'DATA ULTIMA ALTERACAO DA POSTAGEM',
            numeroCurtidas: $'NUMERO DE CURTIDAS DA POSTAGEM',
            statuspostagem: $'STATUS DA POSTAGEM',
            usuarioPublicador: {
                idUsuario: $'ID DO USUARIO',
                nome: $'NOME DO USUARIO',
                email: $'EMAIL DO USUARIO',
                datanascimento: $'DATA DE NASCIMENTO DO USUARIO',
                linkweb: $'LINK WEB DO USUARIO'
            }
        }
    }
]

Publicar Postagem - POST

Url para publicar uma nova postagem. A função recebe uma requisição com apenas dois campos, o 'titulo' e o 'conteudo' da postagem, além do id do usuário que vai fazer a postagem do contéudo.

http://localhost:3000/postagem/publicar/:idUser

{
  "titulo": $'TITULO DA POSTAGEM',
  "conteudo": $'CONTEUDO DA POSTAGEM'
}

Nesse método todos os campos são obrigatórios, portanto, se o usuário deixar um deles vazio será retornado um código 400, e obviamente, se o id do usuário não existir, será exibido uma mensagem dizendo que esse usuário não foi encontrado. Caso ele não cometa nenhum desses erros o código 200 é retornado junto do modelo response.

{
    idpostagem: $'ID DA POSTAGEM',
    titulo: $'TITULO DA POSTAGEM',
    conteudo: $'CONTEUDO DA POSTAGEM',
    dataPostagem: $'DATA DA POSTAGEM',
    dataultimaAlteracao: $'DATA ULTIMA ALTERACAO',
    numeroCurtidas: $'CURTIDAS DA POSTAGEM',
    statuspostagem: $'STATUS DA POSTAGEM',
    usuarioPublicador: {
        idUsuario: $'ID DO USUARIO',
        nome: $'NOME DO USUARIO',
        email: $'EMAIL DO USUARIO',
        datanascimento: $'DATA DE NASCIMENTO DO USUARIO',
        linkweb: $'LINK WEB DO USUARIO' 
    }
}

Login - POST

Url pertencente a funcionalidade Login. Esse método recebe um formulário com apenas dois campos, o campo 'email' e 'senha'.

http://localhost:3000/login

{
  "email": $'EMAIL DO USUARIO',
  "senha": $'SENHA DO USUARIO'
}

Suas validações consistem em verificar se o email informado existe no banco de dados e se a senha informada corresponde ao email cadastrado, caso as informações estejam corretas o sistema retorna um código 200 junto do modelo response.

{
    idusuario: $'ID DO USUARIO',
    nome: $'NOME DO USUARIO',
    email: $'EMAIL DO USUARIO',
    contacriada: $'DATA DA CRIACAO CONTA',
    ultimaatuailzacao: $'DATA DA ULTIMA ATUALIZACAO CONTA',
    datanascimento: $'DATA DE NASCIMENTO',
    ultimologin: $'DATA DO ULTIMO LOGIN',
    linkweb: $'LINK WEB DO USUARIO',
    nivelacesso: $'NIVEL DE ACESSO',
    status: $'STATUS DO USUARIO'
}

Modelagem do banco de dados

Inserts no Banco de dados em formato .txt Script