minimalist Go http server framework
It's like Echo, but it's sweeter
(fake)
解决一些小问题的小玩具。
值得注意的是,在默认的函数处理中,将认为所有的body中都是json数据
当然也对其他特殊格式进行支持,比如文件上传等操作
$ go get github.com/zhzLuke96/Rango
package main
import (
"net/http"
"github.com/zhzLuke96/Rango/rango"
)
func main() {
sev := rango.New("hello")
sev.Func("/", hello)
sev.Start(":8080")
}
func hello(vars rango.ReqVars) interface{} {
return "hello " + vars.GetDefault("name", "world") + " !"
}
GET:
$> curl 127.0.0.1:8080/?name=luke96
{...,data:"hello luke96 !",...}
POST:
$> curl -H "Content-Type:application/json" -X POST --data '{"name": "luke96"}' 127.0.0.1:8080/
{...,data:"hello luke96 !",...}
project in example
folder list all rango.functions
and common usage to help users get started quickly.
- require go
1.13
, build /www/mouse_rainbow.go,
mid := NewMid(...)
sev.Use(mid)
name | desc | example | effect |
---|---|---|---|
memCacher | Memory-based caching | NewMemCacher(60).Mid |
将body保存在缓存中 超时设置为60s |
mat := NewMat(...)
sev.Func("/", fn).AddMatcher(mat)
name | desc | example | effect |
---|---|---|---|
throttle | 限流器 | newThrottle(500) |
500ms内仅回复一个请求 |
matcher 结合 middleware,可以搭配出更复杂的行为
例如
throttle
和cacher
同时使用时,首先会判断是否被缓存,如果没缓存才调用接下来的serve,并穿过throttle
决定是否响应。
func fn(vars rango.ReqVars)interface{}{...}
func main(){
memCacher := middleware.NewMemCacher(10)
throttle := matcher.newThrottle(500)
sev := rango.NewSev()
sev.Use(memCacher.Mid)
sev.Func("/xxxapi", fn).AddMatcher()
sev.Use(sev.Router.Mid)
sev.Start(":8080")
}
- 增加 wasm 支持
- 修复了一些不常见的 bug
- 迁移快速原型功能到独立 repo
- updata .08h
- file upload handler
- add more test.go
- add more comment
- Rapid Prototyping
- example on docker
- finish guide.md
- BLOB stream
- RPC function
- API Document Generation
- Test tools
- ...
GPL-3.0