Iris 是一个快速、简单但功能齐全、非常高效的 Go Web应用框架。
它为您的下一个网站或应用程序接口提供了优美的表现力和易于使用的基础。
Iris特性
- HTTP/2(推送,甚至嵌入式数据)
- 中间件(Accesslog、Basicauth、CORS、gRPC、Anti-Bot hCaptcha、JWT、MethodOverride、ModRevision、Monitor、PPROF、Ratelimit、Anti-Bot reCaptcha、Recovery、RequestID、Rewrite)
- 应用程序接口版本化
- 模型-视图-控制器
- 网络接口
- gRPC
- 自动HTTPS
- 内置 ngrok 支持,以最快的方式将您的应用程序放到互联网上
- 以动态路径为参数的独特路由器,可使用:uuid、:string、:int…等标准类型,并可创建自己的路由器
- 压缩
- 视图引擎(HTML、Django、Handlebars、Pug/Jade 等)
- 创建自己的文件服务器并托管自己的 WebDAV 服务器
- 缓存
- 本地化(i18n、网站地图)
- 会话
- 丰富的响应(HTML、文本、Markdown、XML、YAML、二进制、JSON、JSONP、协议缓冲区、MessagePack、内容协商、流、服务器发送事件等)
- 响应压缩(gzip、deflate、brotli、snappy、s2)
- 丰富的请求(绑定 URL 查询、标题、表单、文本、XML、YAML、二进制、JSON、验证、协议缓冲区、MessagePack 等)
- 依赖注入(MVC、处理程序、API 路由器)
- 测试套件
Demo
package main
// 导入包
import "github.com/kataras/iris/v12"
func main() {
// 定义iris实例
app := iris.New()
// 使用gzip压缩中间件
app.Use(iris.Compression)
// 路由设置
app.Get("/", func(ctx iris.Context) {
ctx.HTML("Hello <strong>%s</strong>!", "World")
})
// 监听端口
app.Listen(":8080")
}
性能测试
发送 200000 个请求,动态参数为 int,发送 JSON 作为请求体,接收 JSON 作为响应。
框架 | 开发语言 | 请求数/秒 | 延迟 | 吞吐量 | 完成时间 |
---|---|---|---|---|---|
Iris | Go | 238954 | 521.69us | 64.15MB | 0.84s |
Gin | Go | 229665 | 541.96us | 62.86MB | 0.87s |
Chi | Go | 228072 | 545.78us | 62.61MB | 0.88s |
Echo | Go | 224491 | 553.84us | 61.70MB | 0.89s |
Martini | Go | 198166 | 627.46us | 54.47MB | 1.01s |
Kestrel | C# | 163486 | 766.90us | 47.42MB | 1.23s |
Buffalo | Go | 102478 | 1.22ms | 28.14MB | 1.95s |
Koa | Javascript | 48425 | 2.56ms | 15.39MB | 4.14s |
Express | Javascript | 23622 | 5.25ms | 9.04MB | 8.41s |