Golang http Error Function

The http.Error function in Golang is part of the net/http package and is used to send an HTTP error response to the client. This function simplifies the process of responding with an error message and a corresponding HTTP status code, such as 404 (Not Found), 500 (Internal Server Error), or any other appropriate status code.

Table of Contents

  1. Introduction
  2. http.Error Function Syntax
  3. Examples
    • Basic Usage
    • Sending a 404 Not Found Error
    • Sending a 500 Internal Server Error
  4. Real-World Use Case
  5. Conclusion

Introduction

The http.Error function is a convenient way to handle error situations in a web server. It allows you to send a custom error message along with the appropriate HTTP status code to inform the client of what went wrong. This function is especially useful for handling cases like missing resources, server errors, or unauthorized access.

http.Error Function Syntax

The syntax for the http.Error function is as follows:

func Error(w http.ResponseWriter, error string, code int)

Parameters:

  • w: The http.ResponseWriter used to write the HTTP response.
  • error: A string containing the error message to be sent to the client.
  • code: An integer representing the HTTP status code to be sent. Common codes include 404 (Not Found), 500 (Internal Server Error), and 403 (Forbidden).

Returns:

  • The function does not return any value. It writes the error response directly to the HTTP response.

Examples

Basic Usage

This example demonstrates how to use the http.Error function to send a simple error response.

Example

package main

import (
	"net/http"
)

func main() {
	// Register a handler for the "/error" path
	http.HandleFunc("/error", func(w http.ResponseWriter, r *http.Request) {
		// Send an error response with a 400 Bad Request status code
		http.Error(w, "Bad Request: Invalid Input", http.StatusBadRequest)
	})

	// Start the server on port 8080
	http.ListenAndServe(":8080", nil)
}

Explanation:

  • The code sets up a web server that listens on port 8080.
  • When the /error path is accessed, the server responds with a 400 Bad Request status code and a custom error message.

Sending a 404 Not Found Error

This example shows how to send a 404 Not Found error using the http.Error function.

Example

package main

import (
	"net/http"
)

func main() {
	// Register a handler for the "/resource" path
	http.HandleFunc("/resource", func(w http.ResponseWriter, r *http.Request) {
		// Simulate that the resource does not exist
		http.Error(w, "Resource not found", http.StatusNotFound)
	})

	// Start the server on port 8080
	http.ListenAndServe(":8080", nil)
}

Explanation:

  • When the /resource path is accessed, the server responds with a 404 Not Found status code and a custom error message indicating that the resource is not available.

Sending a 500 Internal Server Error

This example demonstrates how to send a 500 Internal Server Error using the http.Error function.

Example

package main

import (
	"net/http"
)

func main() {
	// Register a handler for the "/internal-error" path
	http.HandleFunc("/internal-error", func(w http.ResponseWriter, r *http.Request) {
		// Simulate a server error
		http.Error(w, "Internal Server Error", http.StatusInternalServerError)
	})

	// Start the server on port 8080
	http.ListenAndServe(":8080", nil)
}

Explanation:

  • When the /internal-error path is accessed, the server responds with a 500 Internal Server Error status code and a message indicating that there was a problem on the server.

Real-World Use Case

Handling Unauthorized Access

In real-world applications, http.Error can be used to handle unauthorized access by sending a 403 Forbidden response when a user tries to access a resource they are not allowed to.

Example: Handling Unauthorized Access

package main

import (
	"net/http"
)

func main() {
	// Register a handler for the "/admin" path
	http.HandleFunc("/admin", func(w http.ResponseWriter, r *http.Request) {
		// Simulate unauthorized access
		http.Error(w, "Forbidden: You do not have permission to access this resource", http.StatusForbidden)
	})

	// Start the server on port 8080
	http.ListenAndServe(":8080", nil)
}

Explanation:

  • When the /admin path is accessed by an unauthorized user, the server responds with a 403 Forbidden status code and a message indicating that access is not allowed.

Conclusion

The http.Error function in Go is used for handling errors in web applications. By sending an appropriate HTTP status code and error message, you can inform clients of what went wrong and how to address the issue. Whether you're handling missing resources, server errors, or unauthorized access, http.Error provides a straightforward way to manage error responses in your web server.

Comments

Spring Boot 3 Paid Course Published for Free
on my Java Guides YouTube Channel

Subscribe to my YouTube Channel (165K+ subscribers):
Java Guides Channel

Top 10 My Udemy Courses with Huge Discount:
Udemy Courses - Ramesh Fadatare