HTTP Server in Go
Golang Concepts
Go: HTTP Server
Go provides a simple way to create HTTP servers using the net/http package. Here's an example of how to create a simple HTTP server that responds with a "Hello, World!" message:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
})
http.ListenAndServe(":8080", nil)
}
This code creates an HTTP server that listens on port 8080
. When a request is received, the server calls the provided handler function, which writes the "Hello, World!" message to the response.
How to create a server with a custom handler and a logger middleware in Go?
You can also create more complex servers by adding additional handlers and middleware functions.
Here's an example of how to create a server with a custom handler and a logger middleware:-
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", myHandler)
logger := log.New(os.Stdout, "my-server: ", log.LstdFlags)
http.ListenAndServe(":8080", logMiddleware(logger, nil))
}
func myHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
func logMiddleware(logger *log.Logger, next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
logger.Printf("Received %s request from %s", r.Method, r.RemoteAddr)
next.ServeHTTP(w, r)
})
}
This code defines a custom handler function (myHandler
) and a middleware function (logMiddleware
) that logs incoming requests before passing them on to the next handler. The server is created by calling ListenAndServe
with the logger middleware added to the default http.Handler
chain.
I hope that helps you get started with creating HTTP servers in Go! Let me know if you have any more questions.