Developing RESTful Servers and Clients

Let’s learn about the preferred way of structuring a RESTful service.

Overview of RESTful server endpoints in Go

In the next two lessons, we are going to develop a RESTful server and a client for that server using the functionality of the Go standard library to understand how things really work behind the scenes. The functionality of the server is described in the following list of endpoints:

  • /add: This endpoint is for adding new entries to the server.

  • /delete: This endpoint is used for deleting an existing entry.

  • /get: This endpoint is for getting information about an entry that already exists.

  • /time: This endpoint returns the current date and time and is mainly used for testing the operation of the RESTful server.

  • /: This endpoint is used for serving any request that is not a match to any other endpoint.

This is our preferred way of structuring the RESTful service.

Alternative endpoint structure for RESTful service in Go

An alternative way of defining the endpoints would be the following:

  • /users/ with the GET method: Get a list of all users.

  • /users/:id with the GET method: Get information about the user with the given ID value.

  • /users/:id with the DELETE method: Delete the user with the given ID.

  • /users/ with the POST method: Create a new user.

  • /users/:id with either the PATCH or the PUT method: Update the user with the given ID value.

The implementation of the alternative way is left as an exercise for the reader—it should not be that difficult to implement it given that the Go code for the handlers is going to be the same, and we only have to redefine the part where we specify the handling of the endpoints.

Get hands-on with 1200+ tech skills courses.