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
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:
- Install rest GO with one line of code
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:
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.