middlewarex

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 13, 2018 License: MIT Imports: 3 Imported by: 0

README

Middlewarex

CircleCI cover.run Go Report Card GoDoc License

Bunch of middlewares for Labstack Echo.

Requirements

  • Echo 3.x.x

Usage

CRUD

Used for creating RESTful API entrypoints according the given struct.

Versioning

This middleware must be set as a pre middleware.

Doing the following request:

X-Application-Version: vnd.github.v3
GET /toto

will be rewritten as:

GET /v3/toto

Bechmarks

[middlewarex]>> go test -bench .
goos: darwin
goarch: amd64
pkg: github.com/mdouchement/middlewarex
BenchmarkVersioningRW-8     	  300000	     50608 ns/op   // With header rewriting
BenchmarkVersioningVRwM-8   	 5000000	       362 ns/op   // Just versioned routes with the Versioning middleware present
BenchmarkVersioningVR-8     	10000000	       215 ns/op   // Just versioned routes without the Versioning middleware
PASS
ok  	github.com/mdouchement/middlewarex	19.850s

If the header is not specified, no rewrittes are applied.

License

MIT

Contributing

All PRs are welcome.

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

As possible, run the following commands to format and lint the code:

# Format
find . -name '*.go' -not -path './vendor*' -exec gofmt -s -w {} \;

# Lint
golangci-lint run -c .golangci.yml

Documentation

Index

Constants

View Source
const (
	// XApplicationVersion is the header for the asked API version (e.g. vnd.github.v1)
	XApplicationVersion = "X-Application-Version"
	// XApplicationStableVersion is the header for the stable API version (e.g. vnd.github.v3)
	XApplicationStableVersion = "X-Application-Stable-Version"
)

Variables

This section is empty.

Functions

func CRUD

func CRUD(group *echo.Group, path string, resource interface{})

CRUD defines the folowwing resources:

POST:   /path
GET:    /path
GET:    /path/:id
PATCH:  /path/:id
DEL:    /path/:id

func Versioning

func Versioning(stable string, supported ...string) echo.MiddlewareFunc

Versioning rewrites routes to match the last part of the version header. e.g. `X-Application-Version: vnd.github.v3' header will prefix the request's path by `/v3'. The stable API version will be returned in the response's headers.

Types

type CreateSupported

type CreateSupported interface {
	Create(echo.Context) error
}

CreateSupported interface

type DeleteSupported

type DeleteSupported interface {
	Delete(echo.Context) error
}

DeleteSupported interface

type ListSupported

type ListSupported interface {
	List(echo.Context) error
}

ListSupported interface

type ShowSupported

type ShowSupported interface {
	Show(echo.Context) error
}

ShowSupported interface

type UpdateSupported

type UpdateSupported interface {
	Update(echo.Context) error
}

UpdateSupported interface

Directories

Path Synopsis
examples
crud command
versioning command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL