DEV Community

Kaike Castro
Kaike Castro

Posted on

Criando APIs em Go e utilizando KrakenD para unir informações

Olá, pessoal! Hoje vou compartilhar com vocês como criar duas APIs em Go e utilizar o KrakenD para fazer o merge de informações. Vamos lá!

Configuração do ambiente

Certifique-se de ter o Go instalado em seu sistema. Você pode baixar a versão mais recente do site oficial. Além disso, vamos utilizar o KrakenD como nosso gateway API. Você pode encontrar o KrakenD em https://www.krakend.io/.

Criando as APIs

Vamos criar duas APIs simples em Go. Para fins de demonstração, uma API fornecerá informações de usuários e a outra fornecerá informações de produtos. Vamos chamá-las de "user-api" e "product-api", respectivamente.

Dentro do diretório do projeto, crie uma pasta chamada "user-api" e outra chamada "product-api". Em cada pasta, crie um arquivo "main.go" com o seguinte conteúdo:

user-api/main.go:

package main

import (
    "encoding/json"
    "fmt"
    "log"
    "net/http"
)

type User struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
}

func getUser(w http.ResponseWriter, r *http.Request) {
    user := User{
        ID:   1,
        Name: "John Doe",
    }

    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(user)
}

func main() {
    http.HandleFunc("/user", getUser)
    log.Fatal(http.ListenAndServe(":8080", nil))
}


Enter fullscreen mode Exit fullscreen mode

product-api/main.go:

package main

import (
    "encoding/json"
    "fmt"
    "log"
    "net/http"
)

type Product struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
}

func getProduct(w http.ResponseWriter, r *http.Request) {
    product := Product{
        ID:   1,
        Name: "Sample Product",
    }

    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(product)
}

func main() {
    http.HandleFunc("/product", getProduct)
    log.Fatal(http.ListenAndServe(":8081", nil))
}


Enter fullscreen mode Exit fullscreen mode

Configurando o KrakenD

Agora, vamos configurar o KrakenD para fazer o merge das informações das duas APIs. Crie um arquivo chamado "krakend.json" na raiz do projeto com o seguinte conteúdo:

{
  "version": 2,
  "endpoints": [
    {
      "endpoint": "/user",
      "backend": [
        {
          "url_pattern": "/user",
          "host": ["http://localhost:8080"]
        }
      ]
    },
    {
      "endpoint": "/product",
      "backend": [
        {
          "url_pattern": "/product",
          "host": ["http://localhost:8081"]
        }
      ]
    }
  ]
}


Enter fullscreen mode Exit fullscreen mode

Executando o KrakenD

Agora, vamos executar o KrakenD para iniciar nosso gateway API. Abra o terminal e navegue até o diretório raiz do projeto. Em seguida, execute o seguinte comando:

krakend run -c krakend.json
Enter fullscreen mode Exit fullscreen mode

O KrakenD irá ler o arquivo de configuração e iniciar o servidor.

Testando a API

Agora, você pode testar a API acessando os seguintes endpoints:

Além disso, você pode acessar as seguintes URLs através do KrakenD:

O KrakenD irá fazer o merge das informações obtidas das APIs "user-api" e "product-api" e fornecer os dados combinados.

Conclusão

Espero que este tutorial tenha sido útil para você entender como criar APIs em Go e utilizar o KrakenD para unir informações de diferentes fontes. Divirta-se explorando as possibilidades que essa combinação oferece. Até a próxima!

Top comments (0)