web - Go Router + Middleware. Your Contexts.

  •        290

gocraft/web is a Go mux and middleware package. We deal with casting and reflection so YOUR code can be statically typed. And we're fast.Performance is a first class concern. Every update to this package has its performance measured and tracked in BENCHMARK_RESULTS.

https://github.com/gocraft/web

Tags
Implementation
License
Platform

   




Related Projects

go-web-framework-benchmark - :zap: Go web framework benchmark

  •    Go

This benchmark suite aims to compare the performance of Go web frameworks. It is inspired by Go HTTP Router Benchmark but this benchmark suite is different with that. Go HTTP Router Benchmark suit aims to compare the performance of routers but this Benchmark suit aims to compare whole HTTP request processing.

httprouter - A high performance HTTP request router that scales well

  •    Go

HttpRouter is a lightweight high performance HTTP request router (also called multiplexer or just mux for short) for Go.In contrast to the default mux of Go's net/http package, this router supports variables in the routing pattern and matches against the request method. It also scales better.

chi - Lightweight, idiomatic and composable router for building Go HTTP services

  •    Go

chi is a lightweight, idiomatic and composable router for building Go 1.7+ HTTP services. It's especially good at helping you write large REST API services that are kept maintainable as your project grows and changes. chi is built on the new context package introduced in Go 1.7 to handle signaling, cancelation and request-scoped values across a handler chain.

httptreemux - High-speed, flexible tree-based HTTP router for Go.

  •    Go

High-speed, flexible, tree-based HTTP router for Go.This is inspired by Julien Schmidt's httprouter, in that it uses a patricia tree, but the implementation is rather different. Specifically, the routing rules are relaxed so that a single path segment may be a wildcard in one route and a static token in another. This gives a nice combination of high performance with a lot of convenience in designing the routing patterns. In benchmarks, httptreemux is close to, but slightly slower than, httprouter.

Gin - HTTP web framework written in Go (Golang)

  •    Go

Gin is a web framework written in Go (Golang). It features a martini-like API with much better performance, up to 40 times faster thanks to httprouter. If you need performance and good productivity, you will love You can add global, per-group, and per-route middlewares, thousands of nested groups, nice JSON validation and rendering. And the performance will be still great. Gin uses httprouter internally, the fastest HTTP router for Golang. Httprouter was created by Julien Schmidt and it’s based in a Radix Tree algorithm.


bone - Lightning Fast HTTP Multiplexer

  •    Go

These test are just for fun, all these router are great and really efficient. Bone do not pretend to be the fastest router for every job.

lars - :rotating_light: Is a lightweight, fast and extensible zero allocation HTTP router for Go used to create customizable frameworks

  •    Go

Have you ever been painted into a corner by a framework, ya me too! and I've noticed that allot of routers out there, IMHO, are adding so much functionality that they are turning into Web Frameworks, (which is fine, frameworks are important) however, not at the expense of flexibility and configurability. So with no further ado, introducing LARS an HTTP router that can be your launching pad in creating a framework for your needs. How? Context is an interface see example here, where you can add as little or much as you want or need and most importantly...under your control.Note: Since this router has only explicit matches, you can not register static routes and parameters for the same path segment. For example you can not register the patterns /user/new and /user/:user for the same request method at the same time. The routing of different request methods is independent from each other. I was initially against this, and this router allowed it in a previous version, however it nearly cost me in a big app where the dynamic param value say :type actually could have matched another static route and that's just too dangerous, so it is no longer allowed.

turnpike - Go implementation of a WAMP (Web Application Messaging Protocol) client and router

  •    Go

WAMP ("The Web Application Messaging Protocol") is a communication protocol that enables distributed application architectures, with application functionality spread across nodes and all application communication decoupled by messages routed via dedicated WAMP routers. This package provides router and client library implementations as well as a basic stand-alone router. The router library can be used to embed a WAMP router in another application, or to build a custom router implementation. The client library can be used to communicate with any WAMP router.

goji - Goji is a minimalistic and flexible HTTP request multiplexer for Go (golang)

  •    Go

Goji is a HTTP request multiplexer, similar to net/http.ServeMux. It compares incoming requests to a list of registered Patterns, and dispatches to the http.Handler that corresponds to the first matching Pattern. Goji also supports Middleware (composable shared functionality applied to every request) and uses the standard context package to store request-scoped values.Please refer to Goji's GoDoc Documentation for a full API reference.

lion - Lion is a fast HTTP router for building modern scalable modular REST APIs in Go

  •    Go

Lion is a fast HTTP router for building modern scalable modular REST APIs written in Go (golang). Next versions of Lion will support the latest Go version and the previous one. For example, when Go 1.8 is out, Lion will support Go 1.7 and Go 1.8.

Skipper - An HTTP router and reverse proxy for service composition

  •    Go

Skipper is an HTTP router and reverse proxy for service composition. It's designed to handle >100k HTTP route definitions with detailed lookup conditions, and flexible augmentation of the request flow with filters. It can be used out of the box or extended with custom lookup, filter logic and configuration sources.Skipper provides a default executable command with a few built-in filters. However, its primary use case is to be extended with custom filters, predicates or data sources.

pat

  •    Go

It's that simple.The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

mux - A powerful URL router and dispatcher for golang.

  •    Go

Package gorilla/mux implements a request router and dispatcher for matching incoming requests to their respective handler. The name mux stands for "HTTP request multiplexer". Like the standard http.ServeMux, mux.Router matches incoming requests against a list of registered routes and calls a handler for the route that matches the URL or other conditions.

go-http-routing-benchmark - Go HTTP request router and web framework benchmark

  •    Go

This benchmark suite aims to compare the performance of HTTP request routers for Go by implementing the routing structure of some real world APIs. Some of the APIs are slightly adapted, since they can not be implemented 1:1 in some of the routers.Of course the tested routers can be used for any kind of HTTP request → handler function routing, not only (REST) APIs.

mux - mux is a lightweight HTTP request router

  •    Go

mux is a lightweight fast HTTP request router (also called multiplexer or just mux for short) for Go 1.7. The difference between the default mux of Go's net/http package and this mux is, it's supports variables and regex in the routing pattern and matches against the request method. It also scales better.

router - Ruby/Rack HTTP router

  •    Ruby

Rack compatible, lightweight and fast HTTP Router for Ruby and Hanami. Hanami::Router is designed to work as a standalone framework or within a context of a Hanami application.

interpose - Minimalist net/http middleware for golang

  •    Go

Interpose is a minimalist net/http middleware framework for golang. It uses http.Handler as its core unit of functionality, minimizing complexity and maximizing inter-operability with other middleware frameworks.All that it does is manage middleware. It comes with nothing baked in. You bring your own router, etc. See below for some well-baked examples.

react-router-native - A routing library for React Native that strives for sensible API parity with react-router 🤖

  •    Javascript

A routing library for React Native that strives for sensible API parity with react-router. React Router community decided that a reducer-based paradigm similar to that of NavigationExperimental is better suited to native navigation. Transition to a reducer-based paradigm is also being discussed for the web. On the other hand, NavigationExperimental has no intention to support a React Router-like interface and leaves the navigation state up to the developer to maintain.

Kakapo.js - :bird: Next generation mocking framework in Javascript

  •    Javascript

Kakapo its a full featured http mocking library, he allows you to entirely replicate your backend logic in simple and declaritive way directly in the browser. This way you can easily prototype and develop the whole Application without backend and just deactivate Kakapo when you go production. In order to achieve that Kakapo gives you a set of utilities like Routing, Database, Response, Request and so on... Use the kakapo router to declare two custom routes and returning custom data.

react-router-navigation - ⛵️ A complete navigation library for React Native and React Router

  •    Makefile

react-router-navigation is still a work in progress. That means it's extremely likely that you'll encounter issues. Always consider it. react-router-navigation provides tools to navigate between multiple screens with navigators or tab views. This library is based on react-router, react-navigation, and react-native-tab-view.