A very simple and powerful package for making REST requests with very little effort

Related tags

Web Frameworks krest
Overview

Welcome to KRest

KRest stands for Keep it simple REST Package.

It's a very simple and powerful package wrapper over the standard http package for making requests in an easier and less verbose way.

Sample requests

Simple requests using krest look like this:

func main() {
  // Build the client with a maximum request timeout limit of 2 seconds
  // You may specify a shorter timeout on each request using the context.
  rest := krest.New(2*time.Second)

  user, err := getUser(rest)
  if err != nil {
    log.Fatalf("unable to get user: %s", err)
  }

  err := sendUser(rest, user)
  if err != nil {
    log.Fatalf("unable to send user: %s", err)
  }
}

func getUser(rest krest.Provider) (model.User, error) {
  resp, err := rest.Get("https://example.com/user", krest.RequestData{})
  if err != nil {
    // An error is returned for any status not in range 200-299,
    // and it is safe to use the `resp` value even when there are errors.
    if resp.StatusCode == 404 {
      log.Fatalf("example.com was not found!")
    }
    // The error message contains all the information you'll need to understand
    // the error, such as Method, Request URL, response status code and even
    // the raw Payload from the error response:
    log.Fatalf("unexpected error when fetching example.com: %s", err)
  }

  // Using intermediary structs for decoding payloads like this one
  // is recomended for decoupling your internal models from the external
  // payloads:
  var parsedUser struct{
    Name string     `json:"name"`
    Age string      `json:"age"`
    Address Address `json:"address"`
  }
  err := json.Unmarshal(resp.Body, &parsedUser)
  if err != nil {
    return model.User{}, fmt.Errorf("unable to parse example user response as JSON: %s", err)
  }

  // Decode the age that was passed as string to an internal
  // format that is easier to manipulate:
  age, _ := strconv.Atoi(parsedUser.Age)

  return model.User{
    Name:    parsedUser.Name,
    Age:     age,
    Address: parsedUser.Address,
  }, nil
}

func sendUser(rest krest.Provider, user model.User) error {
  resp, err := rest.Post("https://other.example.com", krest.RequestData{
    Headers: map[string]string{
      "Authorization": "Bearer some-valid-jwt-token-goes-here",
    },

    // Using the optional retry feature:
    MaxRetries: 3,

    // Again using intermediary structs (or in this case a map) is also recommended
    // for encoding messages to match other APIs so you can keep your internal models
    // decoupled from any external dependencies:
    Body: map[string]interface{}{
      "fullname": user.Name,
      "address": user.Address,
    }
  })
  if err != nil {
    // Again this error message will already contain the info you might need to debug
    // but it is always a good idea to add more information when available:
    return fmt.Errorf("error sending user to example.com: %s", err)
  }

  return nil
}
Releases(v0.0.2)
Owner
Vinícius Garcia
Vinícius Garcia
Best simple, lightweight, powerful and really fast Api with Golang (Fiber, REL, Dbmate) PostgreSqL Database and Clean Architecture

GOLANG FIBER API (CLEAN ARCHITECTURE) Best simple, lightweight, powerful and really fast Api with Golang (Fiber, REL, Dbmate) PostgreSqLDatabase using

Elias Champi 2 May 20, 2022
REST Layer, Go (golang) REST API framework

REST Layer REST APIs made easy. REST Layer is an API framework heavily inspired by the excellent Python Eve. It helps you create a comprehensive, cust

Olivier Poitrey 1.1k Jun 15, 2022
GoFrame is a modular, powerful, high-performance and enterprise-class application development framework of Golang.

GoFrame English | 简体中文 GoFrame is a modular, powerful, high-performance and enterprise-class application development framework of Golang. If you're a

GoFrame 7.7k Jun 30, 2022
A powerful go web framework for highly scalable and resource efficient web application

webfr A powerful go web framework for highly scalable and resource efficient web application Installation: go get -u github.com/krishpranav/webfr Exa

Krisna Pranav 13 Nov 28, 2021
A streamlined and powerful golang framework

A streamlined and powerful golang framework

熊建波 4 Jan 11, 2022
A powerful go web framework for highly scalable and resource efficient web application

A powerful go web framework for highly scalable and resource efficient web application

null 21 May 25, 2022
skr: The lightweight and powerful web framework using the new way for Go.Another go the way.

skr Overview Introduction Documents Features Install Quickstart Releases Todo Pull Request Issues Thanks Introduction The lightweight and powerful web

go-the-way 1 Jan 11, 2022
An app skeleton for very simple golang web applications

Golang App Skeleton This is a skeleton for a golang web application optimized for simplicity and rapid development. Prerequisites Go 1.15 or greater O

Ad Hoc 74 Jun 19, 2022
package for building REST-style Web Services using Go

go-restful package for building REST-style Web Services using Google Go Code examples using v3 REST asks developers to use HTTP methods explicitly and

Ernest Micklei 4.5k Jun 29, 2022
Simple REST-API implementation using Golang with several packages (Echo, GORM) and Docker

Simple REST-API Boilerplate This is a simple implementation of REST-API using Golang and several packages (Echo and GORM). By default, I use PostgreSQ

Reza Pahlevi 0 Dec 30, 2021
A Simple REST API Build Using Golang

gorestapi A Simple REST API Build Using Golang About gorestapi: a simple music restapi that retrives info about the author, album name, price of it ge

Krisna Pranav 13 Nov 21, 2021
Simple REST API to get time from many different timezones

Timezone API Simple REST API for getting current time in different timezones. This is the first assignment from Rest-Based Microservices API Developme

Irfan Sofyana Putra 0 Oct 31, 2021
Example of REST API to collect simple data

Statistics Collector An example of REST API to collect views statistics How to build There is Docker file you can set TARGET_OS and TARGET_ARCH to com

Artjoms Nemiro 0 Dec 6, 2021
🥒 Simple REST-API product service (download products in .csv file)

?? Simple REST-API product service (download products in .csv file)

Pavel V 2 Nov 28, 2021
Go fiber simple rest API

Go Fiber Gorm CRUD Example Go 1.17 Fiber v2 Gorm with sqlite database driver Swa

Sarawutt Bureekeaw 3 Jun 8, 2022
A simple REST API - Go

go-rest-api A simple REST API Features GET /movies returns list of movies GET /movies/{id} returns details of specific movie as JSON POST /movies acce

ruofan 0 Dec 26, 2021
GateCracker-REST - A RESTful API example for simple lock model information application with Go

Go Lock Models REST API Example A RESTful API example for simple lock model info

Yunus AYDIN 19 Jun 11, 2022
REST api using fiber framework written in golang and using firebase ecosystem to authentication, storage and firestore as a db and use clean architecture as base

Backend API Example FiberGo Framework Docs : https://github.com/gofiber Info This application using firebase ecosystem Firebase Auth Cloud Storage Fir

Atilla Pehlivan 3 May 31, 2022