Awesome Go

rest-go

CategoryUtilities
SubcategoryUtilities
Stars0

A package that provide many helpful methods for working with rest api

About rest-go

Rest GO - Helpful library for Rest API

Build Status eder Go Report Card codecov

A package that provide many helpful methods for working with rest api.

And if u are tired of written, this:


func SomeHandler(w http.ResponseWriter, r *http.Request) {

    w.Header().Add("Content-Type", "application/json")

    product := &product{"Smart TV", 50.00}
    
    bytes, err := json.Marshal(product)
    
    if err != nil {
    	w.WriteHeader(http.StatusInternalServerError)
        // this is super bad!
        message := fmt.Sprintf(`{"message": "%s"}`, err.Error())
    	w.Write([]byte(message))
        return
    }
    
    w.WriteHeader(http.StatusOk)
    w.Write(bytes)
}

Get started:

rest package

The rest package provides some helpful methods that allow you to write better rest api in GO.

  • Allows for very readable code

See it in action:

package yours

import (
    "github.com/edermanoel94/rest-go"
    "net/http"
)

type product struct {
    Name  string `json:"name"`
    Price float32 `json:"price"`
}

func SomeHandler(w http.ResponseWriter, r *http.Request) {
    rest.Marshalled(w, &product{"Smart TV", 50.00}, http.StatusOK)
}

A payload send to your API and desarialize to a struct, to easy!

package yours

import (
    "github.com/edermanoel94/rest-go"
    "net/http"
)

type product struct {
    Name  string `json:"name"`
    Price float32 `json:"price"`
}

// [POST] body: {"name": "eder", "price": 20.00}
func SomePostHandler(w http.ResponseWriter, r *http.Request) {

    product := product{}
    err := rest.GetBody(r.Body, &product)
    if err != nil {
        // do stuff with error
    }
    // Do stuff...
}    

Working with mux package to check if path variable exist.

package yours

import (
    "github.com/edermanoel94/rest-go"
    "github.com/gorilla/mux"
    "net/http"
)

type product struct {
    Name  string `json:"name"`
    Price float32 `json:"price"`
}

// [GET] url: /product/{id}
func SomePostHandler(w http.ResponseWriter, r *http.Request) {
    params := mux.Vars(r)
    err := rest.CheckPathVariables(params, "id")
    if err != nil {
        // do stuff with error
    }
}

TODO List

  • Working with custom errors
  • Add Response for ALB and API Gateway
  • Benchmarking (Memory, CPU)
  • Working with CheckPathVariables and GetPathVariable in Standard library
  • More tests
  • Working with pagination

Installation

To install, use go get using go modules:

go get github.com/edermanoel94/rest-go@latest

Example

To install and build:

cd examples

And use go modules for install packages:

go mod tidy 

Then, to run:

go build

Contributing

Please feel free to submit issues, fork the repository and send pull requests!


License

This project is licensed under the terms of the MIT license.

Frequently Asked Questions

What is rest-go?

rest-go is a Utilities library for the Go programming language. A package that provide many helpful methods for working with rest api

How do I install rest-go?

Install rest-go with the Go module system using `go get edermanoel94/rest-go`. Check the repository for the current installation instructions.

What category does rest-go belong to?

rest-go is listed under Utilities, specifically Utilities.

← Back to Utilities