Home > Article > Backend Development > How to implement http server in golang
Golang is a relatively young programming language, and its application in the field of web development is becoming more and more widespread. In this article, we will introduce how to implement a simple HTTP server using Golang and demonstrate its basic usage through an example.
HTTP is an important part of the web development process. It is a protocol based on client-server communication and is used to transmit data between the client and server. The main function provided by the web server is to receive client requests and respond to the requests, which is what this article will describe.
Golang natively provides the ability to implement HTTP servers using the http
package. In the http
package, a ServeMux
type is provided to implement HTTP routing mechanism. Through the routing mechanism, we can execute different processing functions according to different request URLs. This article will explain how to use it in detail.
Step 1: Import the required packages
In Golang, we need to import the required packages to use their functions. When implementing the HTTP server, we need to import the http
and net/http
packages. The HTTP package contains content related to the HTTP protocol, while the net/http
package contains content related to the HTTP server. The code is as follows:
package main import ( "fmt" "net/http" )
Step 2: Implement the HTTP processing function
The HTTP server needs to implement one or more processing functions to receive client requests and give responses. The processing function is a :func(http.ResponseWriter, *http.Request)
type function (a function pointer is used here), which contains two parameters: http.ResponseWriter
and *http.Request
. The former is an interface for writing back response content, while the latter is a structure containing client request information. In the processing function, we need to generate a response based on the request information and use http.ResponseWriter
to write the response content back to the client. The following is a simple processing function, which is used to handle client requests for http://localhost:8080/hello-world
:
func Hello(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hello World!") }
Step 3: Implement HTTP router
Implementing an HTTP server requires the use of a router. In Golang, HTTP routers can be created using the ServeMux
type in the http
package. The router will map the client request URL to the corresponding processing function. In this example, we define a processing function named Hello
to respond to the client’s request for http://localhost:8080/hello-world
, then we need to This function is registered in the ServeMux
router. The code is as follows:
func main() { mux := http.NewServeMux() mux.HandleFunc("/hello-world", Hello) http.ListenAndServe(":8080", mux) }
In this example, we first create an instance of ServeMux
and assign it to mux
. Next, we use mux.HandleFunc
to register the handler function. This function accepts two parameters, the first parameter is the URL path, and the second parameter is the processing function. It maps the URL path to the handler function so that the corresponding handler function can be called when the request reaches the router.
Finally, in the http
package, a function named ListenAndServe
is provided, which will start the HTTP server at the specified address. In this example, we use :8080
as the listening address. The code is as follows:
http.ListenAndServe(":8080", mux)
Step 4: Complete code
package main import ( "fmt" "net/http" ) func main() { mux := http.NewServeMux() mux.HandleFunc("/hello-world", Hello) http.ListenAndServe(":8080", mux) } func Hello(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hello World!") }
Running this code will start an HTTP server locally, enter http://localhost:8080/hello in the browser -world
, you can see the response results.
The above is the detailed content of How to implement http server in golang. For more information, please follow other related articles on the PHP Chinese website!