Iris è un framework per applicazioni web Golang veloce, semplice ma completo e altamente efficiente.

Fornisce una base espressiva e facile da usare per il tuo prossimo sito web o interfaccia dell'applicazione.

Caratteristiche di Iris

  • HTTP/2 (push, anche dati incorporati)
  • Middleware (Accesslog, Basicauth, CORS, gRPC, Anti-Bot hCaptcha, JWT, MethodOverride, ModRevision, Monitor, PPROF, Ratelimit, Anti-Bot reCaptcha, Recovery, RequestID, Rewrite)
  • Versioning delle API
  • Model-View-Controller
  • Websockets
  • gRPC
  • HTTPS automatico
  • Supporto integrato di ngrok per mettere la tua applicazione online nel modo più veloce possibile
  • Router unico con parametri del percorso dinamico, supportando tipi standard come :uuid, :string, :int e creazione di router personalizzati
  • Compressione
  • Motori di visualizzazione (HTML, Django, Handlebars, Pug/Jade, ecc.)
  • Crea il tuo server dei file e ospita il tuo server WebDAV
  • Caching
  • Localizzazione (i18n, mappa del sito)
  • Sessioni
  • Risposte ricche (HTML, testo, Markdown, XML, YAML, binario, JSON, JSONP, Protocol Buffers, MessagePack, negoziazione del contenuto, stream, eventi inviati dal server, ecc.)
  • Compressione delle risposte (gzip, deflate, brotli, snappy, s2)
  • Richieste ricche (binding della query URL, intestazioni, moduli, testo, XML, YAML, binario, JSON, convalida, Protocol Buffers, MessagePack, ecc.)
  • Iniezione delle dipendenze (MVC, gestori, router API)
  • Suite di test

Demo

package main

// Importa il package
import "github.com/kataras/iris/v12"

func main() {
  // Definire l'istanza di iris
  app := iris.New()
  // Usa il middleware di compressione gzip
  app.Use(iris.Compression)

  // Configurazione del router
  app.Get("/", func(ctx iris.Context) {
    ctx.HTML("Ciao <strong>%s</strong>!", "Mondo")
  })

  // Ascolta sulla porta
  app.Listen(":8080")
}

Test delle prestazioni

Invia 200.000 richieste con parametri dinamici come interi, inviando JSON come corpo della richiesta e ricevendo JSON come risposta.

Framework Linguaggio di sviluppo Richieste al secondo Latenza Throughput Tempo di completamento
Iris Go 238.954 521,69µs 64,15MB 0,84s
Gin Go 229.665 541,96µs 62,86MB 0,87s
Chi Go 228.072 545,78µs 62,61MB 0,88s
Echo Go 224.491 553,84µs 61,70MB 0,89s
Martini Go 198.166 627,46µs 54,47MB 1,01s
Kestrel C# 163.486 766,90µs 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