Golang Go语言分享一个自己的路由工具

Golang Go语言分享一个自己的路由工具
项目在 https://github.com/issue9/mux

能够自动生成 OPTIONS 和 HEAD 的请求处理方式;
也支持类似于 discuz 的路由风格,不会假定两个参数之间必须要有一个 / 符号分隔;
能正确区分不同类型的参数,比如 /posts/{id}/posts/{id:\\d+},只有无法匹配后者的时候,才会尝试匹配前者;
其它的中间件什么的也都有,感觉也玩不出什么花来了。

维护了大概有 4-5 年时间,目前刚更新到 v5 版本,删除了部分无用的功能,个人感觉已经比较稳定了,该有的功能也都有了,性能上也不算太差,兼容官方的 http.Handler 接口。有兴趣的可以试试。

关于性能,我自己做了一个对比数据: https://caixw.github.io/go-http-routers-testing/

同时也提供了一组常用的中间件: https://github.com/issue9/middleware


更多关于Golang Go语言分享一个自己的路由工具的实战教程也可以访问 https://www.itying.com/category-94-b0.html

4 回复

这类轮子太多了

更多关于Golang Go语言分享一个自己的路由工具的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


没办法,水平有限,只能造一些简单的轮子。

楼主的 identicon 一直在用。

在Go语言中,实现一个路由工具是一个既实用又具挑战性的任务。以下是一个关于如何实现简单路由工具的概述,以及一些建议:

一、路由工具基础

路由工具的核心功能是将HTTP请求映射到相应的处理函数。在Go中,net/http包提供了基础的HTTP服务器功能,但为了实现更复杂的路由逻辑(如RESTful API中的参数化路由),通常需要引入第三方库或自行实现路由解析。

二、实现步骤

  1. 定义路由结构:首先,需要定义一个路由结构来存储路径、方法和处理函数的映射关系。
  2. 解析请求:当HTTP请求到达时,根据请求的URL和HTTP方法,在路由表中查找相应的处理函数。
  3. 执行处理函数:找到处理函数后,调用它并传入必要的上下文信息(如请求参数、请求体等)。

三、建议

  1. 参数化路由:支持在URL路径中嵌入参数,如/user/:id,以便在处理函数中获取这些参数。
  2. 中间件支持:提供中间件机制,以便在处理请求前后执行额外的逻辑,如身份验证、日志记录等。
  3. 错误处理:为404未找到、500内部服务器错误等常见HTTP状态码提供统一的错误处理机制。

总之,实现一个路由工具需要对Go语言的HTTP服务器有一定的了解,并熟悉如何解析和处理HTTP请求。希望这些建议能帮助你开始实现自己的路由工具。

回到顶部