Categorygithub.com/DionTech/requestvalidation
repositorypackage
0.1.2
Repository: https://github.com/diontech/requestvalidation.git
Documentation: pkg.go.dev

# README

about

This package is a wrapper for the github.com/go-playground/validator package.

You can validate a request (by struct) and get a status ("success" or "error") and when error, a map[string][]string of errors as a response. This might be useful for a json-formatted api response.

You can also define your own error messages, using the struct field tag message:"validation message here".

usage, for example at aws lambda

go get go get github.com/DionTech/requestvalidation
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"github.com/DionTech/requestvalidation"
	"github.com/aws/aws-lambda-go/events"
	"github.com/aws/aws-lambda-go/lambda"
)


type Response events.APIGatewayProxyResponse
type Request events.APIGatewayProxyRequest
type ExampleRequest struct {
    Name string `json:"name" validate:"required" message:"name is required"`
    Age int `json:"age" validate:"required,min=18" message:"age is required and must be 18 or older"`
}

func Handler(request Request) (Response, error) {
    var buf bytes.Buffer
    
    exampleRequest := ExampleRequest{}
    err := json.Unmarshal([]byte(request.Body), &exampleRequest)
    
    if err != nil {
		return handleError(err, 500), nil
	}

	requestValidator := requestvalidation.NewRequestValidator()
	validation, err := requestValidator.Validate(exampleRequest)

	if err != nil {
		body, err := json.Marshal(validation)
		if err != nil {
			return handleError(err, 500), nil
		}

		json.HTMLEscape(&buf, body)
		resp := Response{
			StatusCode:      422,
			IsBase64Encoded: false,
			Body:            buf.String(),
			Headers:         headers,
		}

		return resp, nil
	}
	
	//do some stuff here
    
}

func main() {
	lambda.Start(Handler)
}

func handleError(err error, statusCode int) Response {
	fmt.Printf("ERROR PDFSERVICE: %s", err.Error())

	return Response{
		StatusCode: statusCode,
		Headers:    headers,
		Body:       err.Error(),
	}
}