Skip to content
Santekno.com | Level Up Your Engineering Skills
EN
📖 0%
01 Nov 2023 · 4 min read ·Article 78 / 119
Go

01 RESTful Introduction to Golang

IH
Ihsan Arif
Writer at Santekno · Backend Engineer

Introduction to RESTFul API

Quoted from the amazon website, RESTful API is an interface used by two computer systems to securely exchange information over the internet. Most business applications must communicate with other internal and third-party applications to perform various tasks. For example, to generate monthly payslips, your internal accounts system must share data with your customers’ banking systems to automate billing and communicate with internal time and attendance applications. RESTful APIs support this exchange of information because they follow software communication standards that are secure, reliable and efficient.

Before getting to how to implement it, do you actually know what REST is? REST stands for Representational State Transfer which is a software architecture that provides requirements on how APIs work. REST was originally created as a guide for managing communication on complex networks such as the internet. You can use a REST-based architecture to support high-performance and reliable communication at scale. You can easily deploy and modify it, bringing cross-platform visibility and portability to all API systems.

API developers can design APIs using several different architectures. APIs that follow the REST architecture style are referred to as REST APIs. Web services that implement the REST architecture are referred to as RESTful web services. The term RESTful API generally refers to a RESTful web API. However, you can use the terms REST API and RESTful API interchangeably.

Some principles of the REST architecture style:

  • Uniform interface, fundamentally all RESTful web services have a standardized format. For example, the server can store data as text or as an HTML representation format.
  • Statelessness*, which refers to the communication method where the server completes each client request independently. And the sever must fulfill all requests at all times.
  • Layered System*, RESTFul runs on multiple sever with multiple layers such as security, application, business logic and work together to fulfill client requests.
  • Cacheablility*, RESTFul supports caching of temporary storage processes for fast client response to improve response time.
  • On-demand coding*, sever can temporarily extend or customize client functionality easily.

Some Things to Learn

Before we learn more about the RESTFul API, we need to first learn the previous topics below

  • HTTP
  • Golang Web
  • Golang HTTPRouter
  • JSON Golang
  • Golang OpenAPI

Simple CRUD (Create, Read, Update, Delete) Application

In the current project, we will create a simple application project that can implement the RESTfull API. There are several criteria that will exist in this project application including:

  1. The data we will create is Article data which has attributes a. it (number) b. title (string) c. content (string)
  2. This CRUD application we can a. create article data, b. make changes to article data, c. view article data and d. delete article data.
  3. All APIs that we will create need to add Authentication in the form of API-Key.

Some dependencies that we will use:

Preparation

We will try to make a step-by-step preparation to create a RESTFul API as follows: First we create the learn-golang-restful folder with the command

bash
1mkdir learn-golang-restful && cd learn-golang-restful

Initialize the project by using Golang Module with the command below and then enter

bash
1go mod init github.com/santekno/learn-golang-restful

Next we take some dependencies that we will use by using go get like this

bash
1go get -u github.com/lib/pq
2go get -u github.com/julienschmidt/httprouter
3go get -u github.com/go-playground/validator

Then two files will appear, namely go.mod and go.sum with file contents like this

bash
1go get -u github.com/lib/pq
2go get -u github.com/julienschmidt/httprouter
3go get -u github.com/go-playground/validator

Then two files will appear, namely go.mod and go.sum with file contents like this

go
 1module github.com/santekno/learn-golang-restful
 2
 3go 1.21.1
 4
 5require (
 6	github.com/go-playground/locales v0.14.1 // indirect
 7	github.com/go-playground/universal-translator v0.18.1 // indirect
 8	github.com/go-playground/validator v9.31.0+incompatible // indirect
 9	github.com/julienschmidt/httprouter v1.3.0 // indirect
10	github.com/leodido/go-urn v1.2.4 // indirect
11	github.com/lib/pq v1.10.9 // indirect
12)

Now we will create API documentation using OpenAPI, now for friends who have not installed the OpenAPI Editor extension in VSCode, we can install it first on this website https://marketplace.visualstudio.com/items?itemName=42Crunch.vscode-openapi .

Create a new file with the name apispec.yml then fill in as below

yml
1openapi: '3.0.2'
2info:
3  title: Article RESTFul API
4  description: API Spec for Article RESTFul API
5  version: '1.0'
6servers:
7  - url: https://localhost:8080/

Related Articles

💬 Comments