Rafael

Engenheiro de Software

Olá, Eu sou Rafael. Estou construindo coisas para a web e mobile.

Um desenvolvedor dedicado a criar experiências digitais de alto desempenho, acessíveis e limpas. Eu me especializo em transformar problemas complexos em soluções de engenharia elegantes.

Criando um ServeMux com Struct e sua função

ServeMux é um multiplexador de requisições HTTP em Go (no pacote net/http) que atua como um roteador. Ele mapeia caminhos de URL (patterns) para manipuladores específicos (handlers), direcionando as requisições recebidas para o código correto.

Há uma forma de usar uma função com implementação de uma struct. Parece inútil né?

Mas dá para utilizar as propriedades da struct no nosso método handler. Isso seria só um exemplo básico, bem legal de se usar, então vamos ver essa implementação:

GO
package main

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

func main() {
	mux := http.NewServeMux()
	mux.Handle("/blog", blog{title: "My Blog", description: "Welcome to my blog!"})
	log.Fatal(http.ListenAndServe(":8080", mux))
}

type blog struct {
	title string
	description string
}

func (b blog) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	html := fmt.Sprintf("<h1>%s</h1><p>%s</p>", b.title, b.description)
	w.Header().Set("Content-Type", "text/html; charset=utf-8")
	w.Write([]byte(html))

}

Chamar o servidor:

SHELL (CLI)
curl http://localhost:8080/blog

0 comentários

Deixe seu comentário