Socket
Socket
Sign inDemoInstall

github.com/frozzare/go-httpapi

Package Overview
Dependencies
0
Alerts
File Explorer

Install Socket

Detect and block malicious and high-risk dependencies

Install

    github.com/frozzare/go-httpapi

Package httpapi combine the popular httprouter package and alice to bring the best of both worlds when creating http apis.


Version published

Readme

Source

httpapi Build Status GoDoc Go Report Card

A http router for building http apis in Go based on httprouter and alice.

The router works almost the same way as httprouter does with some changes:

  • Uppercase method functions is capitalized instead.
  • HandleFunc has two arguments instead of three (request and params).
  • All HandleFunc returns the data and/or a error that the response handle will handle.
  • HandleFunc2 has one argument instead of three (request).
  • HandleFunc3 has one argument instead of three (params).
  • HandleFunc4 has zero arguments instead of three.
  • Default response handler that response with JSON. Can be replaced by a custom handler function.
  • Not all methods exists on httpapi.Router struct as httprouter.Router has, e.g HandlerFunc does not exist.
  • Better support for middlewares with alice.
  • Default httprouter handle can also be used.

Installation

go get -u github.com/frozzare/go-httpapi

Usage

Example code:

router := httpapi.NewRouter()

router.Get("/hello/:name", func(r *http.Request, ps httpapi.Params) (interface{}, interface{}) {
    return map[string]string{
        "hello": ps.ByName("name"),
    }, nil
})

http.Handle("/", router)
http.ListenAndServe(":3000", nil)

Example response:

GET /hello/fredrik
{
    "hello": "fredrik"
}

To configure httprouter you just pass it as argument to NewRouter:

router := httpapi.NewRouter(&httprouter.Router{
    RedirectTrailingSlash: true,
})

To modify the response handle that takes in HandleFunc, HandleFunc2 and HandleFunc3 is wrapped with HandleFunc:

router := httpapi.NewRouter()

router.ResponseHandle = func(fn httpapi.HandleFunc) httpapi.Handle {
    return func(w http.ResponseWriter, r *http.Request, ps httpapi.Params) {
        data, out := fn(r, ps)

        // and so on...
    }
}

Both return values are returned as interfaces to support more than just than the error type.

Middlewares

router := httpapi.NewRouter()

// with standard http handler.
router.Use(func(h http.Handler) http.Handler {
    fmt.Println("Hello, world")
    return h
})

// with httprouter's handle.
router.Use(func(h httpapi.Handle) httpapi.Handle {
    fmt.Println("Hello, world")
    return h
})

License

MIT © Fredrik Forsmo

FAQs

Last updated on 12 Apr 2018

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc