Skip to content

mrz1836/go-api-router

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

673 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

๐ŸŒย ย go-api-router

Lightweight API httprouter middleware: cors, logging, and standardized error handling.


Release Go Version License


CI / CD ย ย  Build Last Commit ย ย ย ย  Quality ย ย  Go Report Coverage
Security ย ย  Scorecard Security ย ย ย ย  Community ย ย  Contributors Bitcoin


Project Navigation

๐Ÿš€ย Installation ๐Ÿงชย Examplesย &ย Tests ๐Ÿ“šย Documentation
๐Ÿคย Contributing ๐Ÿ› ๏ธย Codeย Standards โšกย Benchmarks
๐Ÿค–ย AIย Usage โš–๏ธย License ๐Ÿ‘ฅย Maintainers

๐Ÿ“ฆ Installation

go-api-router requires a supported release of Go.

go get github.com/mrz1836/go-api-router

๐Ÿ“š Documentation

View the generated documentation

GoDoc

Features

  • Uses the fastest router: Julien Schmidt's httprouter
  • Uses gofr's uuid package to guarantee unique request ids
  • Uses MrZ's go-logger for either local or remote logging via Log Entries (Rapid7)
  • Uses MrZ's go-parameters for parsing any type of incoming parameter with ease
  • Optional: NewRelic support!
  • Added basic middleware support from Rileyr's middleware
  • Optional: JWT Authentication (middleware)
  • Added additional CORS functionality
  • Standardized error responses for API requests
  • Centralized logging on all requests (requesting user info and request time)
  • Custom response writer for Etag and cache support
  • GetClientIPAddress() safely detects IP addresses behind load balancers
  • GetParams() parses parameters only once
  • FilterMap() removes any confidential parameters from logs
  • ...and more!
Development Setup (Getting Started)

Install MAGE-X build tool for development:

# Install MAGE-X for development and building
go install github.com/mrz1836/mage-x/cmd/magex@latest
magex update:install
Library Deployment

This project uses goreleaser for streamlined binary and library deployment to GitHub. To get started, install it via:

brew install goreleaser

The release process is defined in the .goreleaser.yml configuration file.

Then create and push a new Git tag using:

magex version:bump bump=patch push=true branch=master

This process ensures consistent, repeatable releases with properly versioned artifacts and citation metadata.

Build Commands

View all build commands

magex help
GitHub Workflows

All workflows are driven by modular configuration in .github/env/ โ€” no YAML editing required.

View all workflows and the control center โ†’

Updating Dependencies

To update all dependencies (Go modules, linters, and related tools), run:

magex deps:update

This command ensures all dependencies are brought up to date in a single step, including Go modules and any managed tools. It is the recommended way to keep your development environment and CI in sync with the latest versions.


๐Ÿงช Examples & Tests

All unit tests and fuzz tests run via GitHub Actions and use Go version 1.25.x. View the configuration file.

Run all tests (fast):

magex test

Run all tests with race detector (slower):

magex test:race

โšก Benchmarks

Run the Go benchmarks:

magex bench

๐Ÿ› ๏ธ Code Standards

Read more about this Go project's code standards.


๐Ÿค– AI Usage & Assistant Guidelines

Read the AI Usage & Assistant Guidelines for details on how AI is used in this project and how to interact with AI assistants.


๐Ÿ‘ฅ Maintainers

MrZ
MrZ

๐Ÿค Contributing

View the contributing guidelines and please follow the code of conduct.

How can I help?

All kinds of contributions are welcome ๐Ÿ™Œ! The most basic way to show your support is to star ๐ŸŒŸ the project, or to raise issues ๐Ÿ’ฌ. You can also support this project by becoming a sponsor on GitHub ๐Ÿ‘ or by making a bitcoin donation to ensure this journey continues indefinitely! ๐Ÿš€

Stars


๐Ÿ“ License

License

About

๐ŸŒ A lightweight API middleware for Julien Schmidt's router: cors, logging, and standardized error handling

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages