O nome é em homenagem a bibliotecária do Reino do Sonhar, responsável por organizar todos os livros já sonhados, é uma figura central e respeitada no universo de Neil Gaiman.
Essa API será responsável gerenciar biblioteca de livros.
Certifique-se de ter o seguinte instalado em sua máquina:
- Go (versão 1.23 ou superior)
- Git
Siga os passos abaixo para rodar o projeto localmente:
docker compose up --buildSe tudo estiver configurado corretamente, você verá a seguinte mensagem no terminal:
go_app_container | Servidor rodando na porta 9090O ngrok é uma ferramenta que cria túneis seguros para expor localmente servidores ou aplicações à internet, permitindo acesso remoto por meio de URLs públicas.
Com o ngrok você pode expor a porta 9090 usando seu código da sua máquina e ele pode ser acessado por outra pessoa, pela internet.
Observação importante: Lembre-se que a internet é um local inseguro, e expor suas portas por muito tempo sem a devida segurança é um risco muito alto. Esse aplicativo deve ser usado somente para testes simples e por pouco período.
Você precisa se cadastrar no ngrok e depois instalar ele na sua estação de trabalho, que será onde vc vai rodar ele.
Você pode criar um domínio fixo pra você, para usar o mesmo domínio sempre nesse link e nesse mesmo link você já pode pegar o link para iniciar o ngrok. Com meu domínio é assim:
ngrok http 9090Com o comando acima o ngrok iniciará um tunel mandando tudo que ele receber nesse domínio na porta padrão http (80) e mandará tudo para sua porta 8080 na localhost.
Você pode testar as rotas disponíveis usando um navegador, curl ou ferramentas como Postman.
Descrição: Retorna o status de saúde da aplicação.
Exemplo de resposta: Código de status: 200 OK Corpo da resposta: vazio
Para executar todos os testes unitários do projeto, use o comando:
go test -v ./...
### Testando a Rota GET /authors
Descrição: A rota `/authors` retorna uma página HTML com a lista de todos os autores cadastrados.
**Exemplo de uso (Navegador ou cURL):**
```bash
curl http://localhost:9090/authors- Resposta esperada (Status
200 OK): Uma página HTML contendo a tabela de autores.
Descrição: A rota /authors permite a criação de um novo autor. Para isso, você deve enviar dados de formulário (application/x-www-form-urlencoded) com o campo name.
Exemplo de sucesso (Nome válido):
curl -X POST -d "name=Teste Autor" http://localhost:9090/authors- Resposta esperada (Status
201 Created):Autor criado com sucesso: Teste Autor
Exemplo de falha (Nome vazio):
curl -X POST -d "name= "" " http://localhost:9090/authors- Resposta esperada (Status
400 Bad Request):O campo "name" é obrigatório
Nós entendemos que o Go, juntamente com a comunidade, não são opinativos quanto a estrutura de diretórios a seguir. Então, compilamos uma estrutura inicial e com o tempo e conforme a aplicação e o time forem amadurecendo, ela crescerá junto. Mas atualmente temos:
|- cmd: pasta de comandos
|- db: pasta raiz para scripts de banco
|- migrations: pasta com as migrações do banco
|- internal: pasta de código da aplicação
|- domain: código dos recursos de domínio
|- handlers: endpoints da aplicação
|- infra: recursos de infraestrutura (chamadas externas à aplicação)
|- database: conexão com o banco
|- rendering: ferramenta de renderização de páginas
|- repository: pasta para as queries de banco de dados
|- views: pasta com as páginas HTML para renderização
|- test: diretório para os testes, ele seguirá a mesma estrutura que a pasta internal de forma proposital para fácil identificação