DEV Community

Devang Tomar
Devang Tomar

Posted on • Originally published at devangtomar.hashnode.dev on

Building a Simple Web Server with Go 🐭

Are you a beginner eager to explore the world of web servers using the Go programming language? πŸš€ In this comprehensive guide, Ill take you on a journey to create a basic web server that not only serves static files but also handles essential HTTP requests. By the end of this tutorial, youll have a robust grasp of the fundamental concepts required for building a web server with Go. Lets dive in!

Understanding Web Servers 🌐

A web server is a software application that processes incoming requests from clients, typically web browsers, and responds by serving web content. It plays a vital role in the architecture of the World Wide Web, enabling the exchange of information between clients and servers. Web servers are the backbone of websites, web applications, and various online services.

Prerequisites πŸ› 

Before we embark on this adventure, make sure you have the following prerequisites:

  1. Basic understanding of Go programming concepts.

  2. Go programming language installed on your machine. You can download and install Go from the official website: Go Downloads.

GitHub repo πŸ‘¨πŸ»πŸ’»

https://github.com/devangtomar/simple-go-webserver

Getting Started 🏁

Lets kickstart our journey by creating a simple web server that serves static HTML files and handles HTTP requests. Follow these steps:

Step 1: Setting Up the Project

mkdir simple-go-webserver
cd simple-go-webserver
mkdir static
cd static
# Create index.html, form.html, and hello.html (you can copy the content from the provided GitHub links)

Enter fullscreen mode Exit fullscreen mode

Step 2: Writing the Go Code

Create a file named main.go in the project directory and add the following code:

package main

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

func helloHandler(w http.ResponseWriter, r *http.Request) {
    // Handler logic for /hello route
}
func formHandler(w http.ResponseWriter, r *http.Request) {
    // Handler logic for /form route
}
func main() {
    // Main function logic
}

Enter fullscreen mode Exit fullscreen mode

Step 3: Running the Web Server

go run main.go

Enter fullscreen mode Exit fullscreen mode

Open your web browser and visit http://localhost:8080 to see your web server in action!

Key Components of the Code 🧩

Lets break down the crucial components of the code:

  1. Importing Packages: We import necessary packages like fmt for formatted I/O, log for logging, and net/http for building HTTP servers and handling HTTP requests and responses.

  2. Handlers: We define two handler functions:

  • helloHandler: Handles requests to the "/hello" route.

  • formHandler: Handles POST requests to the "/form" route.

  1. Route Handling: We use http.HandleFunc to associate our handler functions with specific routes, such as /hello and /form.

  2. Serving Static Files: We create an HTTP file server to serve static files from the static directory using http.FileServer.

  3. Listening and Serving: We use http.ListenAndServe to start the web server on port 8080.

Conclusion πŸŽ‰

Congratulations! Youve successfully built a simple web server using the Go programming language. This project lays the foundation for more advanced web applications and APIs. Remember, practice and experimentation are key.

Explore the code, add new features, and refer to the Go documentation to enhance your web development skills. Happy coding! πŸš€

Connect with Me on social media πŸ“²

🐦 Follow me on Twitter: devangtomar7

πŸ”— Connect with me on LinkedIn: devangtomar

πŸ“· Check out my Instagram: be_ayushmann

Checkout my blogs on Medium: Devang Tomar

# Checkout my blogs on Hashnode: devangtomar

πŸ§‘πŸ’» Checkout my blogs on Dev.to: devangtomar

Top comments (0)