Sobre o projeto

Iris é um framework web para a linguagem Go. O README está escrito em inglês e cobre a linha atual v12, além de uma prévia do lançamento planejado da v14. Capacidades principais descritas para a v12: - Suporte a HTTP/2, incluindo server push e dados incorporados. - Um roteador que aceita parâmetros de caminho dinâmicos com tipos padrão como :uuid, :string e :int, e permite a definição de tipos de parâmetros personalizados. - Middleware integrado, como access log, basic auth, CORS, gRPC, verificações anti-bot hCaptcha e reCaptcha, JWT, method override, monitor, pprof, rate limit, recovery, request ID e rewrite. - Versionamento de API, Model-View-Controller (pacote mvc) e injeção de dependência para MVC, handlers e roteadores de API. - WebSockets, gRPC e HTTPS automático. - Suporte integrado ao ngrok para expor um app local à internet. - Compressão de resposta (gzip, deflate, brotli, snappy, s2) e um middleware de Compression. - Motores de visualização, incluindo HTML, Django, Handlebars e Pug/Jade. - Servidores de arquivos personalizados e um servidor WebDAV. - Cache, internacionalização (i18n, sitemap), sessões e um conjunto de testes. - Respostas ricas: HTML, texto, Markdown, XML, YAML, binário, JSON, JSONP, Protocol Buffers, MessagePack, negociação de conteúdo, streaming e server-sent events. - Vinculação de requisição rica: query de URL, headers, formulário, texto, XML, YAML, binário, JSON, validação, Protocol Buffers e MessagePack. - O código de exemplo no README mostra um app mínimo criado com iris.New(), uma rota registrada via app.Get e app.Listen(":8080"). O README afirma que 285 exemplos estão disponíveis no diretório _examples e fornece links para chat da comunidade e páginas de doação. Planejada v14 (descrita como o maior lançamento da história do projeto, sem data de lançamento pública e com um novo caminho de importação para que o código v12 não seja afetado): - Um construtor de aplicação verificado em tempo de compilação (iris.NewBuilder) que conecta CORS, compressão, access logging, endpoint de saúde, mapeamento de erros, serviços e grupos de API em uma única cadeia com ordem de etapas obrigatória. - Auxiliares de rest, como rest.ReadJSON[T], rest.OK, rest.NoContent, rest.Count, rest.Created e rest.Paginated, que removem a decodificação, validação e renderização de erros dos corpos dos handlers. - Um pacote rest/errors para declarar mapeamentos de erro de domínio para resposta HTTP apenas uma vez, com coletores opcionais para log e renderização como JSON ou visualização. - Injeção de dependência disponível além do MVC, com um hook Init(ctx) executado durante o Build() e recursos fecháveis encerrados no desligamento; o pacote hero substituído por dep e rest. - Mudanças de pacotes: sessions, cache, websocket, i18n, view e versioning tornam-se middleware; mvc move-se para under controller junto com os controladores fileserver, sitemap e apigraph; implementações de motores de visualização movem-se para iris-contrib/views. - Aproximadamente trinta middlewares integrados, incluindo novos como httpcost (tempo, memória e CPU por requisição), bodylimit, compress, counter, referrer, geolocation, ipaccess e servertiming. - Configuração via literais parciais de iris.Options, com Bind carregando YAML da variável de ambiente SERVER_CONFIG ou de um arquivo. - Renomeações como Party para Router e ctx.URLParam para ctx.Query().Get, documentadas em um guia de migração. - Cookies de sessão seguros por padrão (Secure, SameSite=Lax), limites de corpo de requisição em cada caminho de leitura e correções para problemas descritos anteriormente em rate limiting e Logout. - Documentação planejada como um livro de 23 capítulos no repositório, um tutorial de início rápido, um guia de migração da v12 e uma wiki gerada. O README apresenta o Iris como rápido, simples, porém completo, e enfatiza o suporte prolongado da comunidade; também linka para páginas externas de benchmark e depoimentos em vez de relatar medições por conta própria.