Iris é um framework de aplicação web Golang rápido, simples, porém totalmente funcional e altamente eficiente.
Ele fornece uma base expressiva e fácil de usar para o seu próximo site ou interface de aplicativo.
Recursos do Iris
- HTTP/2 (push, até mesmo dados incorporados)
- Middleware (Accesslog, Basicauth, CORS, gRPC, Anti-Bot hCaptcha, JWT, MethodOverride, ModRevision, Monitor, PPROF, Ratelimit, Anti-Bot reCaptcha, Recovery, RequestID, Rewrite)
- Versionamento de API
- Model-View-Controller
- Websockets
- gRPC
- HTTPS automático
- Suporte integrado ngrok para colocar sua aplicação online da forma mais rápida possível
- Roteador exclusivo com parâmetros de caminho dinâmico, suportando tipos padrão como :uuid, :string, :int, e criação de roteador personalizado
- Compressão
- Motores de visualização (HTML, Django, Handlebars, Pug/Jade, etc.)
- Crie seu próprio servidor de arquivos e hospede seu próprio servidor WebDAV
- Caching
- Localização (i18n, sitemap)
- Sessões
- Respostas ricas (HTML, texto, Markdown, XML, YAML, binário, JSON, JSONP, Protocol Buffers, MessagePack, negociação de conteúdo, transmissão, eventos enviados pelo servidor, etc.)
- Compressão de resposta (gzip, deflate, brotli, snappy, s2)
- Solicitações ricas (vincular consulta de URL, cabeçalhos, formulários, texto, XML, YAML, binário, JSON, validação, Protocol Buffers, MessagePack, etc.)
- Injeção de dependência (MVC, manipuladores, roteadores de API)
- Suite de testes
Demonstração
pacote principal
// Importar pacote
import "github.com/kataras/iris/v12"
func main() {
// Definir instância de iris
app := iris.New()
// Usar middleware de compressão gzip
app.Use(iris.Compressão)
// Configuração do roteador
app.Get("/", func(ctx iris.Contexto) {
ctx.HTML("Olá <strong>%s</strong>!", "Mundo")
})
// Ouvir na porta
app.Listen(":8080")
}
Teste de Desempenho
Envie 200.000 solicitações com parâmetros dinâmicos como inteiros, enviando JSON no corpo da solicitação e recebendo JSON como resposta.
Framework | Linguagem de Desenvolvimento | Solicitações por Segundo | Latência | Taxa de Transferência | Tempo de Conclusão |
---|---|---|---|---|---|
Iris | Go | 238.954 | 521,69us | 64,15MB | 0,84s |
Gin | Go | 229.665 | 541,96us | 62,86MB | 0,87s |
Chi | Go | 228.072 | 545,78us | 62,61MB | 0,88s |
Echo | Go | 224.491 | 553,84us | 61,70MB | 0,89s |
Martini | Go | 198.166 | 627,46us | 54,47MB | 1,01s |
Kestrel | C# | 163.486 | 766,90us | 47,42MB | 1,23s |
Buffalo | Go | 102.478 | 1,22ms | 28,14MB | 1,95s |
Koa | Javascript | 48.425 | 2,56ms | 15,39MB | 4,14s |
Express | Javascript | 23.622 | 5,25ms | 9,04MB | 8,41s |