cedar-router

基于前缀树算法的 golang router
授权协议 GPL
开发语言 Google Go
所属分类 服务器软件、 路由器/防火墙
软件类型 开源软件
地区 国产
投 递 者 公良扬
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

cedar,轻量级 Golang 路由器,基于前缀树算法。

cedar.NewRouter().Get(prefix,http.HandlerFunc,http.Handler)

推荐组件

session

更新

现在支持了模糊路由匹配

r.Get("/index/:id",func(w http.ResponseWriter, r *http.Request){
    fmt.Println(r.URL.Fragment) // <- use this ,get the `id`
},nil)

全局方法

r.GlobalFunc("test", func(r *http.Request) error {
   	fmt.Println("123213")
   	return nil
})

支持常见的method

r := cedar.NewRouter()
r.Get("/",http.HandlerFunc(),nil)
r.Post("/",http.HandlerFunc(),nil)
r.Put("/",http.HandlerFunc(),nil)
r.Delete("/",http.HandlerFunc(),nil)

handFunc和Handler在同一路径下我建议只填写一个 . 测试通过websocket ,静态文件路由需要改写 ServerHTTP方法.我默认在当前路径下 static/

同一路由下 不同Method ,会覆盖前面的的HandlerFunc和Handler

新版本修复了该问题

群组路由

r := cedar.NewRouter()
r.Group("/a",func (group *cedar.Groups){
    group.Get("/b",http.HandlerFunc(),nil)
    group.Group("/c",func(groups *cedar.Groups) {
        group.Get("/d",http.HandlerFunc(),nil)
    })
})

同时也支持RestFul风格

r := cedar.NewRestRouter(cedar.RestConfig{
		EntryPath: "blog",
		ApiName:   "api",
		Pattern:   ".",
})

r.Get("user", func(writer http.ResponseWriter, request *http.Request) {
		r.Template(writer, "/index")
}, nil)

//localhost/blog?api=user

通过 localhost/blog?api=user 获得访问.

软件稳定运行在服务器

 相关资料
  • 后缀树 1.1、后缀树的定义 后缀树(Suffix tree)是一种数据结构,能快速解决很多关于字符串的问题。后缀树的概念最早由Weiner 于1973年提出,既而由McCreight 在1976年和Ukkonen在1992年和1995年加以改进完善。 后缀,顾名思义,就是后面尾巴的意思。比如说给定一长度为n的字符串S=S1S2..Si..Sn,和整数i,1 <= i <= n,子串SiSi+1…

  • foo-bar-herp foo-bar-derp baz-blub其他东西 我想提供一个搜索工作,以便 “foo bar”(标记化前缀) “Foo Herp”(跳过令牌) “foo-bar-”(确切的前缀) “bar-herp”(中间的确切字符串) “foo ba”(一个完整的令牌和另一个令牌的前缀) null

  • 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。 说明: 所有输入只包含小写字母 a-z 。 话不多说,上code: /** * @param {stri

  • Cedar 是 Objective-C 上 BDD 风格的单元测试框架。 describe(@"Example specs on NSString", ^{    it(@"lowercaseString returns a new string with everything in lower case", ^{        [@"FOOBar" lowercaseString] should

  • 问题内容: 从下面或此处的程序中,为什么最后一次调用要打印该值7? 问题答案: 这将打印出“ 6”,因为它将i加1并返回值。5 + 1 = 6;这是前缀,在操作中使用该编号之前会添加该编号。 这将打印出“ 6”,因为它需要i,存储副本,加1并返回副本。因此,你获得了我当时的价值,但同时又增加了它。因此,你可以打印出旧值,但是它会增加。后缀增量的好处。 然后,当你打印出i时,它会显示i的实际值,因为

  • 这个问题不是为作业做的,尽管它是一个典型的“类似作业”的问题,我试图用不同的方法来解决。 我想写一个方法,它将使用深度优先搜索算法递归地遍历二叉树,以找到字符的匹配。一旦它找到匹配的字符,我希望它返回一个字符串,该字符串使用0和1映射该字符在树中的位置。例如,“001”将指示通过到根节点的左节点、该节点的左节点,然后到该节点的右节点来找到字符。 下面是我目前拥有的代码: 该方法最初被发送要搜索的字