Функция Handle
func Handle(pattern string, handler Handler)
Handle регистрирует обработчик для данного шаблона в DefaultServeMux. Пример:
package main
import (
"fmt"
"log"
"net/http"
"sync"
)
type countHandler struct {
mu sync.Mutex // guards n
n int
}
func (h *countHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
h.mu.Lock()
defer h.mu.Unlock()
h.n++
fmt.Fprintf(w, "count is %d\n", h.n)
}
func main() {
http.Handle("/count", new(countHandler))
log.Fatal(http.ListenAndServe(":8080", nil))
}
Функция HandleFunc
func HandleFunc(pattern string, handler func(ResponseWriter, *Request))
HandleFunc регистрирует функцию-обработчик для данного шаблона в DefaultServeMux. Привер:
package main
import (
"io"
"log"
"net/http"
)
func main() {
h1 := func(w http.ResponseWriter, _ *http.Request) {
io.WriteString(w, "Hello from a HandleFunc #1!\n")
}
h2 := func(w http.ResponseWriter, _ *http.Request) {
io.WriteString(w, "Hello from a HandleFunc #2!\n")
}
http.HandleFunc("/", h1)
http.HandleFunc("/endpoint", h2)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Функция ListenAndServe
func ListenAndServe(addr string, handler Handler) error
ListenAndServe прослушивает адрес сетевого адреса TCP, а затем вызывает Serve с обработчиком для обработки запросов на входящие соединения. Принятые соединения настраиваются для включения поддержки активности TCP.
Обработчик обычно равен nil, и в этом случае используется DefaultServeMux.
ListenAndServe всегда возвращает ненулевую ошибку.
Пример:
package main
import (
"io"
"log"
"net/http"
)
func main() {
// Hello world, the web server
helloHandler := func(w http.ResponseWriter, req *http.Request) {
io.WriteString(w, "Hello, world!\n")
}
http.HandleFunc("/hello", helloHandler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Функция ListenAndServeTLS
func ListenAndServeTLS(addr, certFile, keyFile string, handler Handler) error
ListenAndServeTLS действует идентично ListenAndServe, за исключением того, что она ожидает HTTPS-соединений. Кроме того, должны быть предоставлены файлы, содержащие сертификат и соответствующий закрытый ключ для сервера. Если сертификат подписан центром сертификации, certFile должен быть объединением сертификата сервера, любых промежуточных продуктов и сертификата CA.
package main
import (
"io"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
io.WriteString(w, "Hello, TLS!\n")
})
// Можно использовать generate_cert.go в crypto/tls
// чтобы сгенерировать cert.pem и key.pem.
log.Printf("About to listen on 8443. Go to https://127.0.0.1:8443/")
err := http.ListenAndServeTLS(":8443", "cert.pem", "key.pem", nil)
log.Fatal(err)
}
Читайте также:
- Веб-приложение на Go: введение в пакет net/http, пример веб-сервера на Go
- Эффективный Go: веб-сервер
- Пакет net/http, краткий обзор
Комментариев нет:
Отправить комментарий