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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.