🚀 O Iris v14 está a caminho. A próxima versão principal é o maior lançamento da história do projeto: o framework reconstruído sobre os genéricos do Go, um construtor de aplicação verificado pelo compilador, auxiliares de requisição que validam por você, um mapa central de erros, trinta middlewares incluídos e um livro dentro do próprio repositório. Veja o que vem no Iris v14 mais abaixo.
A versão descrita aqui, a v12, continua funcionando e continua recebendo correções. A v14 chega em um novo caminho de importação, então nada do seu lado quebra no dia em que ela sair.
⚡ Iris é um framework web rápido, simples, mas completo e muito eficiente para Go.
✨ Ele fornece uma base lindamente expressiva e fácil de usar para seu próximo site ou API.
🌟 Veja o que outras pessoas dizem sobre o Iris e dê uma estrela a este projeto de código aberto
package main
import "github.com/kataras/iris/v12"
func main() {
app := iris.New()
app.Use(iris.Compression)
app.Get("/", func(ctx iris.Context) {
ctx.HTML("Hello <strong>%s</strong>!", "World")
})
app.Listen(":8080")
}Como disse certa vez um desenvolvedor Go, o Iris cobre você por todos os lados e segue firme com o passar dos anos ⭐
Alguns dos recursos que o Iris oferece:
- HTTP/2 (Push, inclusive dados embutidos)
- 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
- Auto-HTTPS
- Suporte nativo ao ngrok, a forma mais rápida de colocar sua aplicação na internet
- Router único com caminhos dinâmicos como parâmetro, com tipos padrão como :uuid, :string, :int... e a possibilidade de criar os seus
- Compressão
- Motores de view (HTML, Django, Handlebars, Pug/Jade e mais)
- Crie seu próprio File Server e hospede seu próprio servidor WebDAV
- Cache
- Localização (i18n, sitemap)
- Sessões
- Respostas ricas (HTML, Text, Markdown, XML, YAML, Binary, JSON, JSONP, Protocol Buffers, MessagePack, Content Negotiation, Streaming, Server-Sent Events e mais)
- Compressão de resposta (gzip, deflate, brotli, snappy, s2)
- Requisições ricas (Bind URL Query, Headers, Form, Text, XML, YAML, Binary, JSON, Validation, Protocol Buffers, MessagePack e mais)
- Injeção de dependência (MVC, Handlers, API Routers)
- Suíte de testes
- E o mais importante... você recebe respostas rápidas e suporte, desde o primeiro dia até hoje
O Iris v14 é o maior lançamento da história do projeto. Ele reconstrói o framework sobre os genéricos do Go e muda a forma como uma aplicação é montada: menos fiação no main, handlers mais curtos e um único lugar para as decisões que antes ficavam espalhadas por cada rota.
Nada disso exige sua atenção hoje. A v12 continua funcionando, continua recebendo correções, e a v14 chega com um guia de migração que cobre cada API renomeada ou removida.
iris.NewBuilder conecta CORS, compressão, log de acesso, o endpoint de saúde, o mapa de erros, seus serviços e seus grupos de API em uma única expressão. O compilador impõe a ordem das etapas, então uma aplicação ou compila corretamente ou não compila de jeito nenhum.
iris.NewBuilder().
Prefix("/api").
AllowOrigin("*").
Compression(true).
LogRequests(true).
Health(true, "production", "kataras").
Errors(errors.NewOptions().
MapErrors(errors.NotFound, catalog.ErrNotFound)).
Services(catalog.NewRepository, catalog.NewService).
API("/products", api.NewProductsAPI).
Build().
Listen(":8080")Decodificação, validação e renderização de erro saem do corpo do handler. rest.ReadJSON[T] decodifica a requisição, executa o método Validate() error do seu tipo quando ele existe, e escreve o 400 sozinho. Os auxiliares de resposta escrevem o status de sucesso, ou o que o seu mapa central disser que aquele erro deve retornar.
func (api *ProductsAPI) create(ctx iris.Context) {
input, ok := rest.ReadJSON[catalog.ProductInput](ctx)
if !ok {
return // 400 já escrito: JSON malformado ou Validate reprovado.
}
id, err := api.svc.Create(ctx, input)
rest.Created(ctx, id, err) // 201, ou o erro mapeado centralmente.
}rest.OK, rest.NoContent, rest.Count e rest.Paginated cobrem os demais formatos que uma API devolve.
O novo pacote rest/errors guarda o mapeamento dos erros do seu domínio para respostas HTTP. Os clientes recebem payloads canônicos e legíveis por máquina. Mensagens internas ficam internas. Registre um coletor e cada falha chega ao seu logger ou ao seu banco de dados a partir de um único lugar. Um erro pode ser renderizado como JSON ou como view, dependendo do que o cliente pediu.
Os construtores declaram o que precisam e o contêiner fornece: para handlers, para grupos de API, para controladores. Um serviço que implementa Init(ctx context.Context) error roda uma vez dentro de Build(). Tudo que pode ser fechado é fechado no desligamento. O pacote hero acabou, substituído por dep e rest, que fazem mais com menos linhas. Os controladores MVC são construídos sobre genéricos.
sessions, cache, websocket, i18n, view e versioning viraram middleware. mvc foi para dentro de controller, ao lado dos novos controladores fileserver, sitemap e apigraph. O apigraph desenha a sua árvore de rotas como um grafo D3 interativo.
Trinta middlewares vêm de fábrica, incluindo os novos: httpcost (tempo, memória e CPU por requisição, para análise de desempenho ou cobrança), bodylimit, compress, counter, referrer, geolocation, ipaccess e servertiming. As implementações dos motores de view foram para iris-contrib/views.
iris.Configuration e os configuradores With* foram substituídos por iris.Options. Defina os campos que importam para você e o resto vem dos padrões. Bind carrega YAML da variável de ambiente SERVER_CONFIG e depois de um arquivo.
app := iris.New(iris.Options{Name: "myapp", LogLevel: "debug"})Ler um cabeçalho de requisição e definir um de resposta não compartilham mais um prefixo que inverte de sentido em silêncio: ctx.Header lê a requisição, enquanto ctx.SetHeader e ctx.ResponseHeader atuam na resposta. Party agora é Router. ctx.URLParam agora é ctx.Query().Get. Cada renomeação está no guia de migração junto do seu substituto, e a maioria é um localizar e substituir.
Os cookies de sessão vêm com Secure e SameSite=Lax. O limite do corpo da requisição é aplicado em todos os caminhos de leitura. Junto com a reconstrução caíram bugs antigos, entre eles um limitador de taxa que registrava os limites sem nunca aplicá-los e uma chamada a Logout capaz de derrubar o processo inteiro.
A v14 vem com um livro de 23 capítulos dentro do repositório, um tutorial inicial que constrói uma API REST com testes em um único documento, um guia de migração para aplicações v12, e um wiki de IA ao vivo gerado a partir do código-fonte que responde perguntas sobre a base de código.
O caminho de importação passa a ser github.com/kataras/iris/v14, então v12 e v14 podem conviver e nada quebra no dia do lançamento. Atualize quando for conveniente. O guia de migração cobre o caminho de importação, a mudança dos pacotes, cada API removida e seu substituto, e as mudanças de comportamento, com comandos prontos para as partes mecânicas.
Ainda não há data pública de lançamento. Acompanhe os releases ou siga @iris_framework para saber primeiro.
Com a sua ajuda, podemos melhorar o desenvolvimento web de código aberto para todo mundo!
O único requisito é a linguagem de programação Go.
$ mkdir myapp
$ cd myapp
$ go mod init myapp
$ go get github.com/kataras/iris/v12@latest # ou @v12.2.11Instalar em um projeto existente
$ cd myapp
$ go get github.com/kataras/iris/v12@latestExecutar
$ go mod tidy -compat=1.23 # -compat="1.23" no windows.
$ go run .O Iris tem uma documentação ampla e detalhada que facilita começar com o framework.
Para uma documentação técnica mais detalhada, visite nossos godocs. E para código executável, você sempre pode visitar o subdiretório ./_examples do repositório.
O Plexon AI é um assistente de programação com IA multiplataforma da Hellenic Development, e vem com uma skill dedicada ao Iris: um guia de desenvolvimento da v14 escrito pelo próprio autor do framework, com dezenove documentos de referência que cobrem roteamento e macros, a API de contexto, os auxiliares rest, tratamento de erros, os trinta middlewares, os controladores nativos, o SDK de autenticação, endurecimento de segurança, persistência, cache, i18n, observabilidade, desempenho, testes, implantação e a migração da v12 para a v14.
Instale a persona Software Developer e a skill do Iris vem junto, ao lado dos agentes de engenharia que ela ativa. Aí o seu assistente escreve código Iris do jeito que o framework foi feito para ser usado, em vez de adivinhar pelo que viu durante o treinamento.
Você pode solicitar hoje o PDF e o acesso online do E-Book do Iris (Nova Edição) e participar do desenvolvimento do Iris.
Adoraríamos ver sua contribuição ao Iris Web Framework! Para mais informações sobre como contribuir com o projeto Iris, veja o arquivo CONTRIBUTING.md.
Lista de todos os contribuidores
Se você descobrir uma vulnerabilidade de segurança no Iris, envie um e-mail para iris-go@outlook.com. Todas as vulnerabilidades de segurança serão tratadas prontamente.
Este projeto está licenciado sob a licença BSD de 3 cláusulas, assim como o próprio projeto Go.
O nome do projeto "Iris" foi inspirado na mitologia grega.



