abmw

package module
v0.0.0-...-50ecc50 Latest Latest
Warning

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

Go to latest
Published: Mar 14, 2019 License: MIT Imports: 8 Imported by: 0

README

Custom Golang middleware collection

  • JSONResponse - simplifies implementation of JSON REST API's
  • ZapLogger - chi middleware for logging using zap logger
  • PromMetrics - chi middleware providing Prometheus metrics endpoint and tracking total number of requests and requests duration partitioned by status code, method and request URI

JSONResponse handler example

import (
    "github.com/acim/abmw"
)

func ExampleHandler(w http.ResponseWriter, r *http.Request) {
    res := abmw.ResponseFromContext(r.Context())
    payload := &struct{
        foo string
        bar string
    }{"example", "golang"}
    res.SetPayload(payload).SetStatusCode(http.StatusAccepted)
}

That's all, your response will be encoded as application/json.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func JSONResponse

func JSONResponse(next http.Handler) http.Handler

JSONResponse middleware is used to inject response object in context and later render it as JSON.

func PromMetrics

func PromMetrics(serviceName, metricsEndpoint string, buckets []float64) func(next http.Handler) http.Handler

PromMetrics returns middleware with Prometheus metrics.

func ZapLogger

func ZapLogger(logger *zap.Logger) func(next http.Handler) http.Handler

ZapLogger is Chi middleware for logging requests using Zap logger.

Types

type Response

type Response struct {
	Payload interface{} `json:"data,omitempty"`
	Errors  []string    `json:"errors,omitempty"`
	// contains filtered or unexported fields
}

Response ...

func ResponseFromContext

func ResponseFromContext(ctx context.Context) *Response

ResponseFromContext returns response from context.

func (*Response) AddError

func (r *Response) AddError(err error) *Response

AddError adds error to response.

func (*Response) SetHeader

func (r *Response) SetHeader(key, value string) *Response

SetHeader sets header to response.

func (*Response) SetHeaders

func (r *Response) SetHeaders(headers map[string]string) *Response

SetHeaders sets headers to response.

func (*Response) SetPayload

func (r *Response) SetPayload(payload interface{}) *Response

SetPayload sets payload to response.

func (*Response) SetStatusCode

func (r *Response) SetStatusCode(statusCode int) *Response

SetStatusCode sets status code to response. If status code is not set if will default to http.StatusOK.

Jump to

Keyboard shortcuts

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