Skip to content

Latest commit

 

History

History
 
 

http

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

http

Go vem com um conjunto enorme de bibliotecas padrão e mais milhares de bibliotecas criadas pela comunidade.

Por exemplo para criar um servidor http basta o seguinte:

package main

import (
	"io"
	"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
	io.WriteString(w, "Olá mundo HTTP!")
}

func main() {
	http.HandleFunc("/", handler)
	http.ListenAndServe(":9999", nil)
}

Servindo arquivos

Esse é um exemplo bem simples de como servir arquivos. Nesse caso o diretório assets contem os arquivos que queremos servir.

package main

import (
  "log"
  "net/http"
)

func main() {
  assets := http.FileServer(http.Dir("assets/"))
  http.Handle("/", assets)

  log.Fatal(http.ListenAndServe(":9999", nil))
}

Servindo arquivos e adicionando cabeçalho

Esse exemplo mostra como adicionar cabeçalhos na resposta do servidor antes de entregar os arquivos. Isso é importante porque você pode manipular o cache no cliente ou mesmo modificar completamente como a requisição vai responder.

Como bonus adicionamos dois parâmetros para configurar a porta e o diretório com os assets.

package main

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

func setHSTSHeader(h http.Handler) http.HandlerFunc {
	return func(w http.ResponseWriter, r *http.Request) {

		w.Header().Add("Strict-Transport-Security", "max-age=63072000; includeSubDomains")

		h.ServeHTTP(w, r)
	}
}

func main() {
	var port = flag.String("port", "9999", "Define what TCP port to bind to")
	var root = flag.String("root", "assets/", "Define the root filesystem path")

	flag.Parse()

	assets := setHSTSHeader(http.FileServer(http.Dir(*root)))
	http.Handle("/", assets)

	log.Fatal(http.ListenAndServe(":"+*port, nil))
}

Esse ultimo exemplo fica melhor se compilarmos com:

go build http.go

E então execute com:

./http --help