- Hands-On RESTful Web Services with Go
- Naren Yellavula
- 388字
- 2021-06-24 17:04:25
Understanding Go's net/http package
Accepting HTTP requests is the primary goal of a web server. In Go, there is a system-level package that helps developers create HTTP servers and clients. The name of the package is net/http. We can understand the functionality of the net/http package by creating a small example. The example accepts an incoming request and returns the timestamp of the server. Let us see the steps for creating such a server:
- Create the program file as follows:
touch -p $GOPATH/src/github.com/git-user/chapter2/healthCheck/main.go
Now, we have a file where we can develop a server with a Health Check API that returns a date/time string.
- Import the net/http package and create a function handler called HealthCheck. The http.HandleFunc is a method that takes a route and a function handler as its arguments. This function handler has to return an http.ResponseWriter object:
package main
import (
"io"
"log"
"net/http"
"time"
)
// HealthCheck API returns date time to client
func HealthCheck(w http.ResponseWriter, req *http.Request) {
currentTime := time.Now()
io.WriteString(w, currentTime.String())
}
func main() {
http.HandleFunc("/health", HealthCheck)
log.Fatal(http.ListenAndServe(":8000", nil))
}
The preceding code creates a HealthCheck function and attaches it to an HTTP route. HandleFunc is used to attach a route pattern to a handler function. ListenAndServe starts a new HTTP server. It returns an error if the server launch is unsuccessful. It takes address:port as the first argument and the second argument is nil, which says use the default multiplexer. We will see multiplexers in detail in the upcoming sections.
- Now, we can start the web server using this command:
go run $GOPATH/src/github.com/git-user/chapter2/healthCheck/main.go
Run the healthCheck.go file from a shell.
- Now, fire up a shell or browser to see the server in action. Here, we use the curl request:
curl -X GET http://localhost:8000/health
The response is as follows:
2019-04-10 17:54:05.450783 +0200 CEST m=+6.612810181
Go has a different concept for handling request and response. We used the io library to write to the response. For web development, we can use a template to automatically fill in the details. Go's internal URL handlers use a ServeMux multiplexer. In the next section, we will discuss more on ServeMux, a built-in URL router in Go.
- 現代C++編程:從入門到實踐
- Implementing Modern DevOps
- Web前端開發技術:HTML、CSS、JavaScript(第3版)
- Visual C++程序設計教程
- Responsive Web Design with HTML5 and CSS3
- 軟件架構:Python語言實現
- Learning DHTMLX Suite UI
- iOS開發實戰:從入門到上架App Store(第2版) (移動開發叢書)
- Java系統化項目開發教程
- Microsoft Dynamics AX 2012 R3 Financial Management
- Essential C++(中文版)
- 深入理解BootLoader
- Go語言入門經典
- 面向對象程序設計及C++(第3版)
- Python高性能編程(第2版)