Skip to content

API RESTful para um Fórum escrito em Kotlin com Spring Boot

License

Notifications You must be signed in to change notification settings

FabioFiorita/Kotlin-REST-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

78a9c39 · Apr 17, 2023
Apr 16, 2023
Apr 15, 2023
Apr 11, 2023
Apr 16, 2023
Apr 16, 2023
Apr 16, 2023
Apr 11, 2023
Apr 14, 2023
Apr 14, 2023
Apr 11, 2023
Apr 16, 2023
Apr 17, 2023
Apr 11, 2023
Apr 11, 2023
Apr 16, 2023

Repository files navigation

API RESTful para um Fórum escrito em Kotlin com Spring Boot 🚀

CI codebeat badge

GitHub GitHub language count GitHub top language

Kotlin REST API

Descrição 📝

Este projeto é uma API RESTful escrita em Kotlin usando o framework Spring Boot. A API simula um fórum e possui os seguintes modelos:

  • Curso 📚
  • Resposta 💬
  • StatusTopico (enum) 📊
  • Topico 📋
  • Usuario 👤

O código está organizado nas seguintes camadas:

  • Controller
  • Service
  • Repository
  • Model
  • DTO
  • Config
  • Security
  • Exception
  • Mapper

Instalação 💻

  1. Clone este repositório
  2. Abra o projeto em sua IDE de preferência
  3. Certifique-se de ter o Maven instalado e configurado em sua máquina
  4. Execute o comando mvn clean install para compilar o projeto e baixar as dependências necessárias
  5. Execute o comando mvn spring-boot:run para iniciar a aplicação

Tecnologias utilizadas 🛠

O projeto utiliza as seguintes tecnologias:

  • Spring Boot: framework Java para desenvolvimento de aplicações web
  • Kotlin: linguagem de programação
  • Jackson: biblioteca para serialização e desserialização JSON
  • Flyway: gerenciador de versões do banco de dados
  • MySQL: banco de dados relacional
  • Spring Security: framework para segurança de aplicações web
  • JWT: biblioteca para autenticação baseada em tokens

Docker 🐳

Para executar o projeto com Docker, execute os seguintes comandos:

  • docker build -t restapi -f Dockerfile .
  • docker run -p 8080:8080 restapi

Testes 🧪

Para executar os testes, execute o comando mvn test

Banco de dados 🗄

Foi utilizado o banco de dados MySQL para armazenar os dados da API. O banco de dados é gerenciado pelo Flyway, que realiza a migração do banco de dados a cada nova versão do projeto.

É possivel utilizar o banco de dados MySQL localmente pelo Docker. Para isso, execute os seguintes comandos:

  • docker pull mysql:8.0.32
  • docker run -d -p 3306:3306 --name mysql-container -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=restapi mysql:8.0.32

Redis 📦

Para utilizar o Cache do Redis, é necessário executar o Redis localmente pelo Docker. Para isso, execute os seguintes comandos:

  • docker pull redis:lastest
  • docker run -d -p 6379:6379 --name redis redis:lastest

Autenticação

A API possui autenticação baseada em tokens. Para acessar os endpoints protegidos, é necessário enviar o token de acesso no header da requisição. Para obter o token de acesso, é necessário enviar uma requisição POST para o endpoint /login com o seguinte corpo:

{
    "username": "admin@email.com",
    "password": "123456"
}

Uso 🔍

A API possui os seguintes endpoints:

  • GET /swagger-ui/index.html: Documentação da API pelo Swagger UI
  • GET /login: Retorna um token de acesso
  • GET /topicos: Retorna uma lista de tópicos
  • GET /topicos?nomeCurso=...: Retorna uma lista de tópicos filtrados por nome do curso
  • GET /relatorios: Retorna um relatório de tópicos
  • GET /topicos/{id}: Retorna informações sobre um tópico específico
  • POST /topicos: Cria um novo tópico
  • POST /respostas: Cria uma nova resposta para um tópico específico
  • PUT /topicos/{id}: Atualiza informações sobre um tópico específico
  • DELETE /topicos/{id}: Exclui um tópico específico

Links úteis 📌

About

API RESTful para um Fórum escrito em Kotlin com Spring Boot

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published