Go Web——HttpRouter路由


简介

HttpRouter 是用于Go的轻量级高性能 HTTP 请求路由器(也称为多路复用器或简称mux)。

与Go包的默认多路复用器net/http相比,此路由器支持路由模式中的变量并匹配请求方法。它也可以更好地扩展。

该路由器针对高性能小内存占用进行了优化。即使有很长的路径和大量的路线,它也能很好地扩展。压缩动态 trie(基数树)结构用于有效匹配。

特点

  • 仅显式匹配:对于其他路由器,例如http.ServeMux,请求的 URL 路径可以匹配多个模式。因此他们有一些尴尬的模式优先规则,比如最长匹配先注册,先匹配。通过这个路由器的设计,一个请求只能匹配一个或不匹配一个路由。结果,也没有意外的匹配,这使得它非常适合 SEO 并改善了用户体验。

  • **不必操心尾部斜线:**选择您喜欢的 URL 样式,如果缺少尾部斜线或有多余的斜线,路由器会自动重定向客户端。当然,只有在新路径有处理程序的情况下才会这样做。如果你不喜欢它,你可以关闭这个行为。

  • **路径自动更正:**除了检测丢失的或额外的斜杠,路由器还可以修复错误的情况并删除多余的路径元素(如..///)。CAPTAIN CAPS LOCK是您的用户之一吗?HttpRouter 可以通过进行不区分大小写的查找并将他重定向到正确的 URL 来帮助他。

  • **路由模式中的参数:**停止解析请求的 URL 路径,只需为路径段命名,路由器将动态值传递给您。由于路由器的设计,路径参数非常便宜。

  • **零垃圾:**匹配和调度过程产生零字节的垃圾。唯一进行的堆分配是为路径参数构建键值对的切片,以及构建新的上下文和请求对象(后者仅在标准Handler/ HandlerFuncAPI 中)。在 3 参数 API 中,如果请求路径不包含参数,则不需要单个堆分配。

  • 高性能: 基准不言自明。有关实施的技术细节,请参见下文。

  • **不再有服务器崩溃:**您可以设置Panic 处理程序来处理在处理 HTTP 请求期间发生的恐慌。然后路由器恢复并让PanicHandler日志记录发生的事情并提供一个很好的错误页面。

  • **非常适合 API:**路由器设计鼓励构建合理的、分层的 RESTful API。此外,它还内置了对OPTIONS 请求和405 Method Not Allowed回复的原生支持。

当然,您也可以设置自定义NotFoundMethodNotAllowed处理程序提供静态文件

下载安装

go get github.com/julienschmidt/httprouter

官方文档

https://pkg.go.dev/github.com/julienschmidt/httprouter

一 快速入门

package main

import (
	"fmt"
	"log"
	"net/http"

	"github.com/julienschmidt/httprouter"
)

func Index
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值