Rocketseat

Servidor HTTP em Go com Proteção CSRF

Servidor HTTP em Go com Proteção CSRF

Conheça o projeto

Neste projeto você irá desenvolver um servidor HTTP em Golang que gerencie operações bancárias simples, utilizando PostgreSQL para armazenamento de dados e proteção contra ataques CSRF.

Instruções

Estrutura, regras e requisitos do projeto

Requisitos

  1. Criar um servidor HTTP em Golang.
  2. Configurar a conexão com um banco de dados PostgreSQL.
  3. Implementar seis rotas para operações bancárias:
    • Criar conta
    • Consultar saldo
    • Depositar dinheiro
    • Sacar dinheiro
    • Transferir dinheiro entre contas
    • Fechar conta
  4. Utilizar tokens CSRF para proteger operações que modificam dados.
  5. Implementar respostas JSON para as requisições.

Estrutura do Banco de Dados (PostgreSQL)

Antes de iniciar a implementação do servidor, configure o banco de dados de acordo com as seguintes especificações, utilizando migrations:

  1. Crie a tabela pessoa_fisica, que armazenará informações sobre indivíduos. Ela deve conter os seguintes campos:
    • id: Identificador único da pessoa (chave primária, autoincrementável).
    • renda_mensal: Renda mensal da pessoa (valor decimal).
    • idade: Idade da pessoa (número inteiro).
    • nome_completo: Nome completo da pessoa (texto de até 255 caracteres).
    • celular: Número de celular (texto de até 20 caracteres).
    • email: Endereço de e-mail (texto de até 255 caracteres).
    • categoria: Categoria da pessoa (texto de até 50 caracteres).
    • saldo: Saldo disponível na conta (valor decimal).
  2. Crie a tabela pessoa_juridica, que armazenará informações sobre empresas. Ela deve conter os seguintes campos:
    • id: Identificador único da empresa (chave primária, autoincrementável).
    • faturamento: Faturamento anual da empresa (valor decimal).
    • idade: Tempo de existência da empresa em anos (número inteiro).
    • nome_fantasia: Nome comercial da empresa (texto de até 255 caracteres).
    • celular: Número de celular da empresa (texto de até 20 caracteres).
    • email_corporativo: Endereço de e-mail corporativo (texto de até 255 caracteres).
    • categoria: Categoria da empresa (texto de até 50 caracteres).
    • saldo: Saldo disponível na conta da empresa (valor decimal).

Rotas

Como já exercitamos a criação de regra de negócio o suficiente até aqui, toda a lógica ficará por sua conta. Para auxiliar, deixaremos apenas as rotas necessárias.

  • Criar Conta (POST /conta)
  • Consultar Saldo (GET /conta/{id}/saldo)
  • Depositar Dinheiro (POST /conta/{id}/deposito)
  • Sacar Dinheiro (POST /conta/{id}/saque)
  • Transferência (POST /conta/transferencia)
  • Fechar Conta (DELETE /conta/{id})

Proteção CSRF

  • Implementar um middleware para validar o token CSRF nas operações que alteram dados.

Projetos relacionados