Creating Your First API: A Step-by-Step Guide using Go

Learn how to create a simple “Hello, World!” API using Go’s built-in packages and test it utilizing curl, a web browser, or Postman

Tetiana Mostova
Nerd For Tech
Published in
5 min readJan 15, 2023

--

Introduction

Go, also known as Golang, is a powerful programming language developed by Google that is known for its simplicity and efficiency. In this tutorial, we will be building a simple API with a GET request using Go. By the end of this tutorial, you will have a solid understanding of how to create a basic API using Go and how to handle GET requests.

The API we are going to create is a simple “Hello, World!” API that will respond with “Hello, World!” when a GET request is made to the root path. Utilizing the built-in net/http package, we will handle HTTP requests and use the fmt package for formatting the output. We will register our request handlers using the http.HandleFunc function and start the HTTP server with the http.ListenAndServe function. Additionally, we will use the http.ResponseWriter and http.Request types to manage the HTTP requests and responses.

Packages

The fmt package is also a built-in Go package that provides a set of functions for formatting and printing text. In this tutorial, we will be using the fmt.Fprintf function to write the "Hello, World!" message to the response writer.

The http package is a powerful and flexible package that can be used to create a wide variety of HTTP servers and clients, but for this tutorial we are just using a small subset of its functionality to create a simple web server.

The fmt package is helpful for formatting the output, and it's a standard package to use for printing, scanning and formatting input and output operations. By using these two packages, we are able to handle HTTP requests and format the output in a very simple and straightforward way, without the need for additional libraries.

This tutorial is perfect for those who are new to Go and want to learn how to create a basic API. It’s a comprehensive guide to building a simple API and understanding the basic principles of Go programming.

Let’s get started!

Code explanation

package main

import (
"fmt"
"net/http"
)

func main() {
http.HandleFunc("/", Handler)
http.ListenAndServe(":8080", nil)
}

func Handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}

This is the complete code for the simple “Hello, World” API that we will be building in this tutorial. Let’s go through it line by line:

package main

This line declares that the package of this file is “main”, which means that it can be executed as a standalone program.

import (
"fmt"
"net/http"
)

These lines import the fmt and net/http packages that we discussed earlier. We will use the fmt package for formatting the output, and the net/http package for creating the HTTP server.

func main() {
http.HandleFunc("/", Handler)
http.ListenAndServe(":8080", nil)
}

This is the main function, which is the entry point of the program. The first line http.HandleFunc("/", Handler) is registering the Handler function as a request handler for incoming requests to the root path ("/"). The http.ListenAndServe function takes two arguments: the first argument is the address and port to listen on (in this case, ":8080"), and the second argument is the handler to use. In this case, we are passing nil as the second argument, which means that we are not using any additional middlewares or handlers. It tells the server to use the default serve mux. Instead, we are using the http.HandleFunc function to register the Handler function as the request handler for the root path.

func Handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}

This line of code defines a function named Handler which takes two arguments, a http.ResponseWriter and a *http.Request.

The http.ResponseWriter interface is used to construct an HTTP response, it gives you the flexibility to write data to the response in various ways.

The *http.Request pointer type contains information about the incoming request, including the HTTP method, headers, and the URL of the request.

The function Handler then uses the fmt.Fprintf function to write the string "Hello, World!" to the http.ResponseWriter.

This Handler function serves as a handler for the incoming HTTP requests, it is the entry point for the request, it will be called every time a request is made to the server on the root path ("/"). The fmt.Fprintf function writes the string "Hello, World!" to the response writer, which will be sent back as the response to the client.

It is an important part of the code as it defines the behavior of your API, it determines how the server will handle incoming requests and what the response will be.

Usage

To run the code, you will need to have Go installed on your computer. If you don’t have it installed, you can download it from the official website.

Once you have Go installed, you can run the code by navigating to the directory where the code is saved and running the command go run ./main.go. This will start the server and you should see a message like "Listening on :8080..."

To test the API, you can use a tool like curl, a web browser, or Postman.

  1. Using curl:
curl localhost:8080/

This will send a GET request to the root path of the server and you should see the “Hello, World!” message in the response.

2. Using a web browser:

Additionally, you can check the API by opening a web browser and navigating to http://localhost:8080/. You should see the “Hello, World!” message in the browser.

3. Using Postman:

Another option is to verify the API using the Postman application. You can download it from here. Once you have Postman installed, open it and create a new request. Set the method to GET and enter the URL http://localhost:8080/ in the address bar. Send the request and you should see the message in the response.

Furthermore, you can perform a test for other types of requests such as POST, PUT and DELETE using Postman. You just have to set the method to the appropriate one and add the required parameters in the body if necessary.

It’s also worth noting that this code is a basic example of how to create an API using Go. In a real-world scenario, you would likely need to handle more complex logic and handle different types of requests, such as POST and PUT, as well as handle errors.

In conclusion, this tutorial demonstrated how to create a simple “Hello, World” API using Go. We covered the basics of the net/http and fmt packages, and how to use them to handle HTTP requests, format the output, and create a simple web server. We also showed how to test the API using curl, a web browser, and Postman.

Creating a basic API like this is a great way to learn the basics of Go and web development. I hope that this tutorial has provided a solid foundation for you to build upon and that you feel confident in your ability to create your own basic APIs using Go.

Thank you for following along and learning a new skill with me. I hope you found this tutorial informative and helpful. If you have any questions or feedback, please don’t hesitate to reach out.

--

--

Tetiana Mostova
Nerd For Tech

Cloud Developer & Engineer | 4 x AWS Certified | JavaScript | React.js | Docker | Terraform | Jenkins | Linux | CCNA