GitHub - edermanoel94/rest-go: A package that provide many helpful methods for working with rest api. (original) (raw)

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.

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

Installation

To install, use go get using go modules:

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

Example

To install and build:

And use go modules for install packages:

Then, to run:

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.