Skip to content

lucca16bit/spring-forum-hub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Forum Hub

Bem-vindo ao ForumHub, uma API REST construída para gerenciar tópicos e discussões em fóruns. Este projeto foi desenvolvido com o objetivo de praticar conceitos de desenvolvimento backend, arquitetura REST e integrações com banco de dados.

Funcionalidades

  1. Cadastro de Tópicos: Permite criar tópicos com título, mensagem, autor e curso.

  2. Listagem de Tópicos: Endpoint para listar todos os tópicos cadastrados.

  3. Detalhes de um Tópico: Endpoint para recuperar informações detalhadas de um tópico pelo seu ID.

  4. Exclusão de um tópico: Endpoint para excluir um tópico utilizando o ID como base de busca.

  5. Autenticação JWT: Garante a segurança da API com autenticação baseada em tokens.

Tecnologias utilizadas

Rotas disponíveis

  1. Cadastro de Usuário

    • Endpoint: /cadastro
    • Método: POST
    • Corpo da requisição:
      {
        "nome": "nome do usuario",
        "email": "email do usuario",
        "senha": "senha do usuario"
      }

    Resposta: 200 Ok com o usuário cadastrado

  2. Autenticação JWT

    • Endpoint: /login
    • Método: POST
    • Corpo da requisição:
      {
        "email": "email do usuario",
        "senha": "senha do usuario"
      }

    Resposta: 200 Ok com o usuário logado

    • Observação: Todos os endpoints que exigem autenticação devem incluir o token JWT no cabeçalho da requisição com o nome Authorization e o token no prefixo Bearer. Exemplo:
         Authorization: <token_jwt>
    
  3. Cadastro de Tópicos

    • Endpoint: /topicos
    • Método: POST
    • Corpo da requisição:
     {
         "titulo": "Título do tópico",
         "mensagem": "Mensagem do tópico",
         "autor": "Nome do autor",
         "curso": "Nome do curso"
     }

    Resposta: 201 Created com o ID do tópico criado

  4. Listagem de Tópicos

    • Endpoint: /topicos
    • Método: GET
    • Resposta: 200 OK com uma lista de tópicos em formato JSON
       "content": [
             {
                 "id": 1,
                 "titulo": "Dúvida Spring Boot",
                 "mensagem": "Como implementar validação?",
                 "dataCriacao": "16/01/2025 13:11",
                 "status": "NAO_RESPONDIDO",
                 "autor": "fern",
                 "curso": "Spring Boot"
             },
             {
                 "id": 2,
                 "titulo": "Dúvidas sobre supressão de mana",
                 "mensagem": "depois de 2 mil anos fazendo isso, percebi que não estou mais aguentando suprimir minha mana",
                 "dataCriacao": "16/01/2025 13:16",
                 "status": "NAO_RESPONDIDO",
                 "autor": "frieren",
                 "curso": "Magia ancestral"
             }
        ]
  5. Detalhes de um Tópico

    • Endpoint: /topicos/{id}
    • Método: GET
    • Resposta: 200 OK com as informações detalhadas do tópico em formato JSON
     {
       "id": 2,
       "titulo": "Dúvidas sobre supressão de mana",
       "mensagem": "depois de 2 mil anos fazendo isso, percebi que não estou mais aguentando suprimir minha mana",
       "dataCriacao": "16/01/2025 13:16",
       "status": "NAO_RESPONDIDO",
       "autor": "frieren",
       "curso": "Magia ancestral"
     }
  6. Atualizar um Tópico

    • Endpoint: /topicos
    • Método: PUT
    • Corpo da requisição:
     {
       "id": id_topico,
       "titulo": "Alterar título do tópico",
       "mensagem": "Alterar mensagem do tópico",
       "curso": "Alterar nome do curso"
     }

    Resposta: 200 Ok com informações atualizadas

  7. Exclusão de um Tópico

    • Endpoint: /topicos/{id}
    • Método: DELETE
    • Resposta: 204 No Content se o tópico for excluído com sucesso

Como Executar o Projeto

  • Java JDK 17 ou superior.
  • Gerenciador de pacotes maven instalado.
  • Banco de dados configurado (por exemplo: MySQL ou PostgreSQL).
  • Ferramenta para teste de Api (por exemplo: Postman ou Insomnia)

Passos para Execução

  1. Clone o repositório:
    git clone https://github.com/lucca16bit/spring-forum-hub
    cd spring-forum-hub
  2. Configure o banco de dados:
    spring.datasource.url=jdbc:mysql://localhost:3306/forum_hub
    spring.datasource.username=seu-usuario
    spring.datasource.password=sua-senha
    spring.jpa.hibernate.ddl-auto=update
    api.security.token.secret=sua-senha-jwt
  3. Compile e execute o projeto:
    mvn clean install
    mvn spring-boot:run
badge literalura

About

API Rest para o ForumHub, desenvolvido com o objetivo de praticar conceitos de desenvolvimento back-end, arquitetura REST e integrações com banco de dados.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages