SaaSHub helps you find the best software and product alternatives Learn more →
Goblin Alternatives
Similar projects and alternatives to goblin
-
Gin
Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.
-
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
-
mux
Discontinued A powerful HTTP router and URL matcher for building Go web servers with 🦍
-
-
-
mux
Mux is a simple and efficient route distributor that supports the net/http interface of the standard library. (by obity)
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
go-clean-architecture-web-application-boilerplate
A web application boilerplate built with go and clean architecture.
-
GoRouter
Go Server/API micro framework, HTTP request router, multiplexer, mux (by vardius)
-
-
-
-
-
go-http-routing-benchmark
Go HTTP request router and web framework benchmark
-
go-router-benchmark
Benchmark tests for http router implemented in golang.
-
-
-
docker-based-monitoring-stack-boilerplate
This is a boilerplate for docker based monitoring stack.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
goblin reviews and mentions
- Help wanted about my router allocs
-
Implemented a bench marker to compare Go's HTTP Router
Regarding bmf-san/goblin, we found that it is a proprietary extension of the tri-tree, which is not very optimized and has poor performance compared to other HTTP Routers. (We will do our best to improve it...)
-
Improving the performance of your code starting with Go
When I decided to improve the performance of goblin, a homebrew HTTP Router, I tried to work on performance improvement in Go, so I write about my approach and the efforts I put into practice.
-
Scratch and mange the my blog
goblin
-
Release goblin fully compatible with net/http
goblin is an HTTP router made by golang based on the trie tree.
-
Summary of "Introduction to Golang HTTP router made with net/http"
From the above code, if you read the net / http code with the following points in mind, you can see what to implement. - Where and how the multiplexer registers handlers, and what are the specifications for matching URLs and patterns? - How to create a handler (whether there is a variation of handler creation, what interface should be satisfied) Details [bmf-tech.com-Chapter 3 HTTP Server Code Reading] (https://bmf-tech.com/posts/net%EF%BC%8Fhttp%E3%81%A7%E3%81%A4 % E3% 81% 8F% E3% 82% 8BHTTP% E3% 83% AB% E3% 83% BC% E3% 82% BF% E3% 83% BC% E8% 87% AA% E4% BD% 9C% E5 % 85% A5% E9% 96% 80 #% E7% AC% AC3% E7% AB% A0HTTP% E3% 82% B5% E3% 83% BC% E3% 83% 90% E3% 83% BC% E3% 81% AE% E3% 82% B3% E3% 83% BC% E3% 83% 89% E3% 83% AA% E3% 83% BC% E3% 83% 87% E3% 82% A3% E3% 83% B3% E3% 82% B0), so please refer to it if you have time. # Implementation As I introduced at the beginning, the HTTP router implemented this time is in the following repository. [bmf-san/introduction-to-golang-http-router-made-with-net-http] (https://github.com/bmf-san/introduction-to-golang-http-router-made-with- net-http /) This time we will implement a simple HTTP router that "supports method-based routing". * Since it is a summary version, detailed explanation of the code is omitted. Method-based routing means that you can register URLs by HTTP method. In the function of Go standard package only, if you want to route by method, you need to implement conditional branching in the handler. `` `go // ex. func indexHandler (w http.ResponseWriter, r * http.Request) { switch r.Method { case http.MethodGet: // do something ... case http.MethodPost: // do something ... ... default: default: `` ``` This time, we will implement it only with the goal of eliminating this trouble. In order to achieve method-based routing, we will adopt a tri-tree-based data structure. Since it is a simple function, a simpler data structure (such as making it possible to use the standard multiplexer function for each method) is fine, but we will adopt it in anticipation of various implementations later. (To be honest, I just simplified the implementation of [bmf-san / goblin] (https://github.com/bmf-san/goblin).) The general things to do in implementing an HTTP router are as follows. - Process to add URL and handler mapping to data structure - https://github.com/bmf-san/introduction-to-golang-http-router-made-with-net-http/blob/main/trie.go#L51 - Process to search for matching data from the mapped data structure (≈ tri-tree-based data structure) - https://github.com/bmf-san/introduction-to-golang-http-router-made-with-net-http/blob/main/trie.go#L93 --Implementation of DSL for registering mapping - Around here https://github.com/bmf-san/introduction-to-golang-http-router-made-with-net-http/blob/main/router.go#L47 - Implementation of function as a multiplexer (≈ implementation of ServeHTTP) - https://github.com/bmf-san/introduction-to-golang-http-router-made-with-net-http/blob/main/router.go#L54 The first thing you want to do to implement is to implement the data structure. ! [tree_for_implementation] (https://user-images.githubusercontent.com/13291041/138551924-ca2e28f5-a0c1-4ae4-ac9f-76d6ee1c46d9.png) It is easier to work if you use the debug function of the editor (using delve in vscode) or write test code to check if it is implemented well. For implementation details, see [bmf-tech.com-Chapter 4 HTTP Router Implementation] (https://bmf-tech.com/posts/net%EF%BC%8Fhttp%E3%81%A7%E3%81] % A4% E3% 81% 8F% E3% 82% 8BHTTP% E3% 83% AB% E3% 83% BC% E3% 82% BF% E3% 83% BC% E8% 87% AA% E4% BD% 9C % E5% 85% A5% E9% 96% 80 #% E7% AC% AC4% E7% AB% A0HTTP% E3% 83% AB% E3% 83% BC% E3% 82% BF% E3% 83% BC% See E3% 81% AE% E5% AE% 9F% E8% A3% 85). # Summary HTTP routers are almost indispensable for creating web applications, and aren't they very much taken care of? My motivation was that I wanted to make something that I used as a matter of course and use it myself. There are already a lot of great HTTP routers out there, so I think one of the real thrills is that it's worth researching. This time I implemented it in Go, but if I understand the mechanism, I think that it can be implemented in languages other than Go. In Go, the interface is provided in a form that makes it easy to extend the function of the standard package, so I felt that it was relatively easy to make by myself. If you are interested in this article, I would be grateful if you could take a look at [bmf-san/goblin] (https://github.com/bmf-san/goblin). Feel free to send an Issue or Pull Request. :D
-
Introduction to Golang HTTP router made with net/http
The author has released an HTTP router package called bmf-san/goblin.
-
A note from our sponsor - SaaSHub
www.saashub.com | 18 Apr 2024
Stats
bmf-san/goblin is an open source project licensed under MIT License which is an OSI approved license.
The primary programming language of goblin is Go.