100 KiB
Actualités
🚀 Iris v14 arrive. La prochaine version majeure est la plus importante de l'histoire du projet : le framework reconstruit sur les génériques de Go, un constructeur d'application vérifié par le compilateur, des aides de requête qui valident à votre place, une table d'erreurs centrale, trente middlewares intégrés et un livre livré dans le dépôt lui-même. Voir ce qui arrive dans Iris v14 plus bas.
La version décrite ici, v12, continue de fonctionner et de recevoir des correctifs. v14 arrive sur un nouveau chemin d'import, donc rien ne casse chez vous le jour de sa sortie.
Iris Web Framework English
العربية
⚡ Iris est un framework web pour Go à la fois rapide, simple, très complet et très efficace.
✨ Il fournit des moyens simples et élégants de construire les bases de votre prochain site web ou API.
🌟 Lisez ce que les développeurs pensent d'Iris et étoilez ce projet open source
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")
}
Comme l'a dit un jour un développeur Go, Iris vous couvre sur tous les fronts et tient bon au fil des années ⭐
Quelques-unes des fonctionnalités qu'offre Iris :
- HTTP/2 (Push, y compris les données embarquées)
- Middlewares (Accesslog, Basicauth, CORS, gRPC, Anti-Bot hCaptcha, JWT, MethodOverride, ModRevision, Monitor, PPROF, Ratelimit, Anti-Bot reCaptcha, Recovery, RequestID, Rewrite)
- Versionnage d'API
- Model-View-Controller
- Websockets
- gRPC
- Auto-HTTPS
- Prise en charge intégrée de ngrok, le moyen le plus rapide de publier votre application sur internet
- Un routeur unique avec des chemins dynamiques en paramètre, des types standards comme :uuid, :string, :int... et la possibilité de créer les vôtres
- Compression
- Moteurs de vues (HTML, Django, Handlebars, Pug/Jade et plus)
- Créez votre propre serveur de fichiers et hébergez votre propre serveur WebDAV
- Cache
- Localisation (i18n, sitemap)
- Sessions
- Réponses riches (HTML, Text, Markdown, XML, YAML, Binary, JSON, JSONP, Protocol Buffers, MessagePack, Content Negotiation, Streaming, Server-Sent Events et plus)
- Compression des réponses (gzip, deflate, brotli, snappy, s2)
- Requêtes riches (Bind URL Query, Headers, Form, Text, XML, YAML, Binary, JSON, Validation, Protocol Buffers, MessagePack et plus)
- Injection de dépendances (MVC, Handlers, API Routers)
- Suite de tests
- Et le plus important... vous obtenez des réponses rapides et du support, depuis le premier jour jusqu'à aujourd'hui
🚀 Ce qui arrive dans Iris v14
Iris v14 est la plus grande version de l'histoire du projet. Elle reconstruit le framework sur les génériques de Go et change la façon dont une application est assemblée : moins de câblage dans main, des handlers plus courts, et un seul endroit pour les décisions qui étaient auparavant éparpillées sur chaque route.
Rien de tout cela ne demande votre attention aujourd'hui. v12 continue de fonctionner, continue de recevoir des correctifs, et v14 arrive avec un guide de migration qui couvre chaque API renommée ou supprimée.
Toute l'application dans une chaîne vérifiée par le compilateur
iris.NewBuilder câble CORS, compression, journalisation des accès, l'endpoint de santé, la table d'erreurs, vos services et vos groupes d'API en une seule expression. Le compilateur impose l'ordre des étapes : une application se construit correctement, ou ne se construit pas du tout.
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")
Les handlers cessent de se répéter
Le décodage, la validation et le rendu des erreurs sortent du corps du handler. rest.ReadJSON[T] décode la requête, exécute la méthode Validate() error de votre type lorsqu'elle existe, et écrit lui-même le 400. Les aides de réponse écrivent le statut de succès, ou ce que votre table centrale dit que cette erreur doit renvoyer.
func (api *ProductsAPI) create(ctx iris.Context) {
input, ok := rest.ReadJSON[catalog.ProductInput](ctx)
if !ok {
return // 400 déjà écrit : JSON malformé ou Validate en échec.
}
id, err := api.svc.Create(ctx, input)
rest.Created(ctx, id, err) // 201, ou l'erreur mappée centralement.
}
rest.OK, rest.NoContent, rest.Count et rest.Paginated couvrent les autres formes de réponse d'une API.
Les erreurs sont déclarées une seule fois
Le nouveau paquet rest/errors contient la correspondance entre les erreurs de votre domaine et les réponses HTTP. Les clients reçoivent des charges utiles canoniques et lisibles par une machine. Les messages internes restent internes. Enregistrez un collecteur et chaque échec atteint votre logger ou votre base de données depuis un seul endroit. Une erreur peut être rendue en JSON ou en vue, selon ce que le client a demandé.
L'injection de dépendances partout, pas seulement en MVC
Les constructeurs déclarent ce dont ils ont besoin et le conteneur le fournit : pour les handlers, pour les groupes d'API, pour les contrôleurs. Un service qui implémente Init(ctx context.Context) error s'exécute une fois dans Build(). Tout ce qui peut être fermé est fermé à l'arrêt. Le paquet hero disparaît, remplacé par dep et rest, qui en font plus en moins de lignes. Les contrôleurs MVC sont construits sur les génériques.
Les paquets sont là où on les attend
sessions, cache, websocket, i18n, view et versioning sont devenus des middlewares. mvc a été déplacé sous controller, aux côtés des nouveaux contrôleurs fileserver, sitemap et apigraph. apigraph dessine votre arbre de routes sous forme de graphe D3 interactif.
Trente middlewares sont fournis d'origine, dont de nouveaux : httpcost (temps, mémoire et CPU par requête, pour l'analyse de performance ou la facturation), bodylimit, compress, counter, referrer, geolocation, ipaccess et servertiming. Les implémentations de moteurs de vues ont été déplacées vers iris-contrib/views.
La configuration est un littéral partiel
iris.Configuration et les configurateurs With* sont remplacés par iris.Options. Renseignez les champs qui vous intéressent, le reste vient des valeurs par défaut. Bind charge du YAML depuis la variable d'environnement SERVER_CONFIG, puis depuis un fichier.
app := iris.New(iris.Options{Name: "myapp", LogLevel: "debug"})
Des noms qui disent ce qu'ils font
Lire un en-tête de requête et définir un en-tête de réponse ne partagent plus un préfixe qui change discrètement de sens : ctx.Header lit la requête, tandis que ctx.SetHeader et ctx.ResponseHeader travaillent sur la réponse. Party devient Router. ctx.URLParam devient ctx.Query().Get. Chaque renommage figure dans le guide de migration avec son remplacement, et la plupart tiennent en un rechercher-remplacer.
Sécurisé par défaut
Les cookies de session sont livrés avec Secure et SameSite=Lax. La limite de taille du corps de requête est appliquée sur tous les chemins de lecture. La reconstruction a emporté des bugs de longue date, parmi lesquels un limiteur de débit qui enregistrait les limites sans jamais les appliquer et un appel à Logout capable d'emporter le processus avec lui.
Une documentation qui se lit du début à la fin
v14 est livré avec un livre de 23 chapitres dans le dépôt, un tutoriel de démarrage qui construit une API REST testée en un seul document, un guide de migration pour les applications v12, et un wiki IA en direct généré depuis les sources qui répond aux questions sur le code.
Ce que cela signifie pour votre code v12
Le chemin d'import devient github.com/kataras/iris/v14, donc v12 et v14 peuvent cohabiter et rien ne casse le jour de la sortie. Mettez à jour quand cela vous arrange. Le guide de migration couvre le chemin d'import, les déplacements de paquets, chaque API supprimée et son remplacement, ainsi que les changements de comportement, avec des commandes prêtes pour les parties mécaniques.
Il n'y a pas encore de date de sortie publique. Surveillez les releases ou suivez @iris_framework pour l'apprendre en premier.
👑 Soutiens
Avec votre aide, nous pouvons améliorer le développement web open source pour tout le monde !
📖 Démarrer avec Iris
Installation
Le seul prérequis est le langage de programmation Go.
Créer un nouveau projet
$ mkdir myapp
$ cd myapp
$ go mod init myapp
$ go get github.com/kataras/iris/v12@latest # ou @v12.2.11
Installer dans un projet existant
$ cd myapp
$ go get github.com/kataras/iris/v12@latest
Exécuter
$ go mod tidy -compat=1.23 # -compat="1.23" sous windows.
$ go run .
Iris possède une documentation complète et précise qui facilite la prise en main du framework.
Pour une documentation technique plus détaillée vous pouvez consulter nos godocs. Et pour du code exécutable vous trouverez toujours le sous-dossier ./_examples du dépôt.
Développer avec Plexon AI
Plexon AI est un assistant de programmation IA multiplateforme signé Hellenic Development, et il est livré avec une skill dédiée à Iris : un guide de développement v14 écrit par l'auteur du framework, avec dix-neuf documents de référence couvrant le routage et les macros, l'API de contexte, les aides rest, la gestion des erreurs, les trente middlewares, les contrôleurs intégrés, le SDK d'authentification, le durcissement de la sécurité, la persistance, le cache, l'i18n, l'observabilité, les performances, les tests, le déploiement et la migration de v12 vers v14.
Installez la persona Software Developer et la skill Iris arrive avec elle, aux côtés des agents d'ingénierie qu'elle active. Votre assistant écrit alors du code Iris tel que le framework est censé être utilisé, au lieu de deviner à partir de ce qu'il a croisé pendant son entraînement.
Vous aimez lire en voyageant ?
Vous pouvez demander dès aujourd'hui le PDF et l'accès en ligne à l'E-Book Iris (nouvelle édition) et participer au développement d'Iris.
🙌 Contribuer
Toute contribution à Iris est la bienvenue ! Pour plus d'informations sur la contribution au projet référez-vous au fichier CONTRIBUTING.md.
🛡 Sécurité et vulnérabilités
Si vous trouvez une vulnérabilité dans Iris, envoyez un e-mail à iris-go@outlook.com. Toute vulnérabilité sera corrigée aussi rapidement que possible.
📝 Licence
Le projet est sous licence BSD 3 clauses, tout comme le langage Go lui-même.
Le nom "Iris" est inspiré de la mythologie grecque.

