api-rest

module
v0.0.0-...-8544ee9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 31, 2023 License: MIT

README

NPM

Documentação da API REST em Go

Aqui está a documentação da API REST em Go e do cliente para consumir essa API.

API REST em Go

Estrutura do Projeto

api/
  └── main.go
client/
  └── main.go

Descrição

A API REST em Go é um servidor que expõe um endpoint /users para recuperar uma lista de usuários em formato JSON. A lista de usuários é fixa e não persistente.

Endpoints

GET /users Retorna uma lista de usuários em formato JSON.

Exemplo de resposta:

[
  {
    "ID": 1,
    "Name": "Marcio Sena"
  },
  {
    "ID": 5,
    "Name": "Tonico"
  }
]

Código-fonte

// api/main.go
package main

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

type User struct {
	ID   int
	Name string
}

func main() {
	http.HandleFunc("/users", getUsers)
	fmt.Println("API está em execução em: http://localhost:8080")
	log.Fatal(http.ListenAndServe(":8080", nil))
}

func getUsers(w http.ResponseWriter, r *http.Request) {
	if r.Method != "GET" {
		http.Error(w, http.StatusText(http.StatusMethodNotAllowed), http.StatusMethodNotAllowed)
		return
	}

	w.Header().Set("Content-Type", "application/json")
	json.NewEncoder(w).Encode([]User{
		{
			ID:   1,
			Name: "Marcio Sena",
		},
		{
			ID:   5,
			Name: "Tonico",
		},
	})
}

Cliente da API em Go

Descrição

O cliente da API é um programa em Go que consome o endpoint /users da API REST e exibe a lista de usuários no console.

Código-fonte

// client/main.go
package main

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

type User struct {
	ID   int
	Name string
}

func main() {
	resp, err := http.Get("http://localhost:8080/users")
	if err != nil {
		fmt.Println("Erro ao fazer a requisição:", err.Error())
		return
	}
	defer resp.Body.Close()

	if resp.StatusCode != 200 {
		fmt.Println("Não foi possível obter os dados. Código de status:", resp.StatusCode)
		return
	}

	body, err := io.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Erro ao ler o corpo da resposta:", err.Error())
		return
	}

	var users []User
	err = json.Unmarshal(body, &users)
	if err != nil {
		fmt.Println("Erro ao decodificar a resposta:", err.Error())
		return
	}

	fmt.Println("Lista de Usuários:")
	for _, user := range users {
		fmt.Printf("ID: %d, Nome: %s\n", user.ID, user.Name)
	}
}

Executando a API e o Cliente

  • Abra um terminal e navegue até a pasta api.
  • Execute o seguinte comando para iniciar a API:
go run main.go
  • Abra outro terminal e navegue até a pasta client.
  • Execute o seguinte comando para iniciar o cliente:
go run main.go

O cliente irá consumir a API e exibir a lista de usuários retornada pelo servidor.

Nota: Certifique-se de que a API esteja em execução antes de executar o cliente. Caso contrário, o cliente mostrará um erro ao tentar se conectar à API.

Autor

Márcio sena

https://www.linkedin.com/in/marciosenaf/

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL