À propos du projet

Iris est un framework web pour le langage Go. Le README est écrit en anglais et couvre la version actuelle v12, ainsi qu'un aperçu de la version v14 prévue. Capacités principales décrites pour la v12 : - Support HTTP/2, incluant le server push et les données intégrées. - Un routeur acceptant des paramètres de chemin dynamiques avec des types standards tels que :uuid, :string et :int, et permettant de définir des types de paramètres personnalisés. - Middlewares intégrés tels que access log, basic auth, CORS, gRPC, vérifications anti-bot hCaptcha et reCaptcha, JWT, method override, monitor, pprof, rate limit, recovery, request ID et rewrite. - Versionnage d'API, Modèle-Vue-Contrôleur (package mvc) et injection de dépendances pour MVC, les handlers et les routeurs d'API. - WebSockets, gRPC et HTTPS automatique. - Support ngrok intégré pour exposer une application locale sur Internet. - Compression des réponses (gzip, deflate, brotli, snappy, s2) et un middleware de compression. - Moteurs de vue incluant HTML, Django, Handlebars et Pug/Jade. - Serveurs de fichiers personnalisés et un serveur WebDAV. - Cache, internationalisation (i18n, sitemap), sessions et une suite de tests. - Réponses riches : HTML, texte, Markdown, XML, YAML, binaire, JSON, JSONP, Protocol Buffers, MessagePack, négociation de contenu, streaming et server-sent events. - Liaison de requêtes riche : requête URL, headers, formulaire, texte, XML, YAML, binaire, JSON, validation, Protocol Buffers et MessagePack. - Le code d'exemple dans le README montre une application minimale créée avec iris.New(), une route enregistrée via app.Get, et app.Listen(":8080"). Le README indique que 285 exemples sont disponibles dans le répertoire _examples et renvoie vers le chat communautaire et les pages de dons. Version v14 prévue (décrite comme la plus importante version de l'histoire du projet, sans date de sortie publique et avec un nouveau chemin d'importation afin que le code v12 ne soit pas affecté) : - Un constructeur d'application vérifié à la compilation (iris.NewBuilder) qui relie CORS, compression, journalisation d'accès, point de terminaison de santé, mappage d'erreurs, services et groupes d'API en une seule chaîne avec un ordre d'étapes imposé. - Des aides rest telles que rest.ReadJSON[T], rest.OK, rest.NoContent, rest.Count, rest.Created et rest.Paginated qui déplacent le décodage, la validation et le rendu des erreurs hors des corps des handlers. - Un package rest/errors pour déclarer une seule fois les mappages d'erreurs de domaine vers les réponses HTTP, avec des collecteurs optionnels pour la journalisation et le rendu en JSON ou vue. - Injection de dépendances disponible au-delà de MVC, avec un hook Init(ctx) s'exécutant pendant Build() et des ressources fermables fermées à l'arrêt ; le package hero remplacé par dep et rest. - Déplacements de packages : sessions, cache, websocket, i18n, view et versioning deviennent des middlewares ; mvc se déplace sous controller aux côtés des contrôleurs fileserver, sitemap et apigraph ; les implémentations de moteurs de vue se déplacent vers iris-contrib/views. - Environ trente middlewares groupés, incluant de nouveaux comme httpcost (temps, mémoire et CPU par requête), bodylimit, compress, counter, referrer, geolocation, ipaccess et servertiming. - Configuration via des littéraux partiels iris.Options, avec Bind chargeant le YAML depuis la variable d'environnement SERVER_CONFIG ou un fichier. - Renommages tels que Party en Router et ctx.URLParam en ctx.Query().Get, documentés dans un guide de migration. - Cookies de session sécurisés par défaut (Secure, SameSite=Lax), limites de corps de requête sur chaque chemin de lecture, et corrections pour des problèmes précédemment décrits dans le rate limiting et Logout. - Documentation prévue sous la forme d'un livre de 23 chapitres dans le dépôt, un tutoriel de démarrage, un guide de migration v12 et un wiki généré. Le README présente Iris comme rapide, simple mais complet, et souligne le support communautaire à long terme ; il renvoie également vers des pages de benchmarks et de témoignages externes plutôt que de rapporter des mesures lui-même.