Iniciando Heimdall - getheimdall/heimdall GitHub Wiki
Este tutorial pretende mostrar como criar executar o Heimdall localmente para facilitar o desenvolvimento.
Após a leitura desse tutorial o desenvolvedor deve ser capaz de:
- Executar o Heimdall
- Criar um Environment
- Criar uma Api
- Criar um Resource
- Criar uma Operation
- Criar um Inteceptor
Lembre-se que você vai executar 3 aplicações Spring Boot, 1 banco de dados, RabbitMq e Redis. Tenha pelo menos 6GB de RAM disponível na sua máquina.
Baixar o Heimdall para a sua máquina
Crie uma pasta na sua máquina que vai conter o Heimdall e utilize o comando
$ git clone --depth=1 https://github.com/getheimdall/heimdall.git heimdall
$ cd heimdall
Modo Docker
Requisitos
- Docker https://www.docker.com/
- Docker Compose https://docs.docker.com/compose/
Se você quiser criar as imagens com suas modificações você pode clonar todo o repositório e criar os artefatos com o Maven. Depois disso execute:
$ docker-compose -f docker-compose.yml -f docker-compose.dev.yml up
docker-compose.dev.yml herda de docker-compose.yml provendo a possibilidade de expor todas as portas convenientes par desenvolvimento.
Acesse Heimdall: http://localhost:3000
Modo Developer
Requisitos
- Nodejs https://nodejs.org/
- Maven https://maven.apache.org/
- Java 8 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- PostgreSQL https://www.postgresql.org/
- Erlang http://www.erlang.org/downloads
- RabbitMQ https://www.rabbitmq.com/download.html
- Redis https://redis.io/download or https://github.com/MicrosoftArchive/redis/releases
Para executar o Heimdall faça:
Inicie o Config
$ cd /heimdall-config
$ mvn spring-boot:run
Inicie o Gateway (precisa do config executando)
$ cd /heimdall-gateway
$ mvn spring-boot:run
Inicie a Api (precisa do config executando)
$ cd /heimdall-api
$ mvn spring-boot:run
[Opcional] Inicie o front-end (precisa da Api executando)
$ cd /heimdall-frontend
$ npm install
$ npm run start
Endpoints importantes
- http://localhost:8080 - Gateway
- http://localhost:8888 - Config
- http://localhost:9090 - API
- http://localhost:3000 - Front-end
Criar um Environment
Selecione Environment na barra lateral para criar o seu Environment.
Na parte inferior da página clique no botão para criar um novo Environment e preencha os seguintes valores nos campos mostrados:
- Name: Environment de Teste
- Description: Simples environment para teste
- Inbound URL:
http://127.0.0.1:8080 - Outbound URL:
http://127.0.0.1:8080
Existe uma validação para o inbound do Environment. Todo inbound url deve seguir um dos seguintes padrões:
http[s]://host.domain[:port]www.host.domain[:port]
Por isso não é possível criar um Environment com o inbound URL http://localhost:8080. No entanto isso não impacta os testes abaixo. As chamadas podem ser feitas tanto para http://localhost:8080 quando para http://127.0.0.1:8080.
Com isso crie seu Environment.
Criar uma Api
Selecione Api na barra lateral para criar o sua Api.
Na parte inferior da página clique no botão para criar um novo Environment e preencha os seguintes valores nos campos mostrados:
- API Name: Api de Teste
- API version: 1.0.0 (ou qualquer versão que você queira)
- Description: Simples Api para teste
- Base path: /basepath (ou qualquer basepath que você queira)
- Selecione o Environment que você criou no passo anterior
Com isso crie sua Api.
Criar um Resource
Após criar a Api você vai ser redirecionado para tela de listagem de Api's. Selecione a sua Api.
Na aba Resources escolha a opção de adicionar novo Resource e preencha os campos:
- Name: Resource de Teste
- Description: Simples Resource de teste
Crie seu Resource.
Criar uma Operation
Ainda na aba de Resource, clique no seu Resource recém criado em seguida na opção de adicionar uma Operation e preencha os campos com os seguintes valores:
- Method: GET
- Path: /teste
- Description: Operation de teste
Crie o Operation.
Criar um Inteceptor
Na tela de Interceptor selecione o Resource e o Operation que você criou.
Para adicionar um Interceptor, clique e arraste o tipo para a área de Request. O tipo que queremos é o Mock.
- Name: Interceptor de Teste
- Description:
- Life Cycle: OPERATION
- Content: <Não modifique>
Testando
Para testar seu trabalho realize uma chamada http apontando para http://localhost:8080/basepath/teste e você deverá ver o seguinte resultado:
{
"name":"Mock Example"
}