From ce5719b048925f1df55699067469d037969169bc Mon Sep 17 00:00:00 2001 From: Quinta <0pietroquintavalle0@gmail.com> Date: Fri, 19 Jul 2024 17:47:00 +0200 Subject: [PATCH] README --- README.md | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d426e10..3aba72b 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,92 @@ -# httpserver -A very basic HTTP server made in GO +# Basic HTTP Server in Go +This document explains the functionalities of a basic HTTP server implemented in Go. The server responds to two different routes: `/` and `/hello`. + +## Code Overview + +### Package and Imports + +```go +package main + +import ( + "errors" + "fmt" + "io" + "net/http" + "os" +) +``` + +The server starts by defining the main package and importing necessary libraries: + +- errors: For handling errors. +- fmt: For formatted I/O operations. +- io: For basic input and output interfaces. +- net/http: For HTTP client and server implementations. +- os: For interacting with the operating system. + +### Root Handler + +```go +func getRoot(w http.ResponseWriter, r *http.Request) { + fmt.Printf("Request received: \n") + io.WriteString(w, "This is my first web server. \n") +} +``` +The getRoot function handles requests to the root URL (/). It prints a message to the console and responds to the client with a simple message. + +### Hello Handler + +```go +func getHello(w http.ResponseWriter, r *http.Request) { + fmt.Printf("Hello request received: \n") + io.WriteString(w, "Hello, World! \n") +} +``` +The getHello function handles requests to the /hello URL. It prints a different message to the console and responds with a "Hello, World!" message. + +### Main Function + +```go +func main() { + http.HandleFunc("/", getRoot) + http.HandleFunc("/hello", getHello) + + err := http.ListenAndServe(":8080", nil) + if errors.Is(err, http.ErrServerClosed) { + fmt.Printf("Server Closed! \n") + } else if err != nil { + fmt.Printf("Error: %v \n", err) + os.Exit(1) + } + fmt.Printf("Server started! \n") +} +``` +The main function sets up the HTTP server: + +- It registers the getRoot handler for the root URL (/). +- It registers the getHello handler for the /hello URL. +- It starts the server on port 8080 using http.ListenAndServe. +- If the server is closed or an error occurs, appropriate messages are printed, and the program exits with a status code of 1. + +### Error Handling +The server uses errors.Is to check if the error returned by http.ListenAndServe is http.ErrServerClosed. If a different error occurs, it prints the error and exits the program. + + +## Running the Server +To run the server, execute the following command in your terminal: + +```bash +go run main.go +``` + +This will start the server on port 8080. You can access the root URL (`http://localhost:8080/`) and the hello URL (`http://localhost:8080/hello`) in your browser or using a tool like CURL. +```bash +curl http://localhost:8080/ +curl http://localhost:8080/hello +``` + +The server will respond with the following messages for each route: +- http://localhost:8080/: Displays "This is my first web server." +- http://localhost:8080/hello: Displays "Hello, World!" +