1
0
mirror of https://github.com/kataras/iris.git synced 2026-07-31 08:29:50 +00:00
Files
kararas_iris/README_FR.md
T
2026-07-27 11:40:16 +03:00

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 العربية

build status view examples chat donate

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

Benchmarks: Jul 18, 2020 at 10:46am (UTC)

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 !

getsentry github lensesio thepunterbot h4rdc0m draFWM gf3 trading-peter AlbinoGeek basilarchia sumjoe simpleittools xiaozhuai Remydeme celsosz linxcoder jnelle TechMaster janwebdev altafino jakoubek alekperos day0ng hengestone thomasfr code-chimp CetinBasoz International Juanses SometimesMage ansrivas boreevyuri brentwilson camilbinas ekobayong lexrus li3p madhu72 mosorize se77en tstangenberg vincent-li DavidShaw sascha11110 clichi2002 derReineke Sirisap22 primadi agoncecelia chrisliang12 zyu hobysmith pluja antonio-pedrazzini clacroix njeff3 ixalender mubariz-ahmed Cesar th31nitiate stgrosshh Didainius DmarshalTU IwateKyle Little-YangYang Major2828 MatejLach amritpal042 andrefiorot boomhut cshum dtrifonov gadokrisztian geordee guanting112 iantuan ichenhe rodrigoghm icibiri jewe11er jfloresremar jingtianfeng kilarusravankumar leandrobraga lfbos lpintes macropas marcmmx mark2b miguel-devs mihado mmckeen75 narven odas0r olaf-lexemo pitexplore pr123 rsousacode sankethpb wixregiga GeorgeFourikis saz59 shadowfiga siriushaha skurtz97 srinivasganti syrm tuhao1020 BlackHole1 L-M-Sherlock claudemuller keymanye wahyuief xuyan2018 xvalen xytis ElNovi IpastorSan KKP4 Lernakow ernestocolombo francisstephan pixelheresy rcapraro soiestad spkarason thanasolykos ukitzmann DanielKirkwood colinf simonproctor FernandoLangOFC Firdavs9512 Flammable-Duck Gepetdo Hongjian0619 JoeD Jude-X Kartoffelbot KevinZhouRafael KrishManohar Laotanling Longf99999 Lyansun MihaiPopescu1985 TBNilles ajanicij aprinslo1 Mohammed8960 NA Neulhan kyoukhana spazzymoto victorgrey ArishSultan ehayun kukaki oshirokazuhide t6tg 15189573255 AGPDev AnatolyUA AwsIT NguyenPhuoc Oka00 PaddyFrenchman RainerGevers Ramblestsad SamuelNeves Scorpio69t Serissa4000 TianJIANG Ubun1 WangYajun39 XinYoungCN YukinaMochizuki a112121788 acdias aeonsthorn agent3bood ajb-neodynamics-io alessandromarotta algobot76 algoflows angelaahhu anhxuanpham annieruci antoniejiao artman328 b2cbd baoch254 bastengao beytullahakyuz bjoroen blackHoleNgc1277 bunnycodego carlos-enginner centratelemedia chrismalek civicwar cnzhangquan cuong48d damiensy danlanxiaohei dextercai dfaugusto dkzhang dloprodu donam-givita dph0899 dvitale ec0629 edwindna2 ekiyooka ekofedriyanto eli-yip eljefedelrodeodeljefe fenriz07 ffelipelimao frenchmajesty gastropulgite geGao123 globalflea gloudx gnosthi gogoswift goten002 guanzi008 hdezoscar93 hieungm hieunmg homerious hzxd inyellowbus iuliancarnaru iysaleh jackptoke jackysywk jeff2go jeremiahyan joelywz kamolcu kana99 edsongley katsubushiken kattaprasanth keeio keval6706 khasanovrs kkdaypenny knavels kohakuhubo korowiov kostasvk lafayetteDan lbsubash leki75 lemuelroberto liheyuan lingyingtan linuxluigi lipatti maikelcoke marek-kuticka marman-hp mattbowen maxgozou maxgozzz mitas mizzlespot mkell43 mnievesco mo3lyana motogo mtrense mukunhao mulyawansentosa nasoma ngseiyu nikharsaxena nronzel odelanno onlysumitg xPoppa yesudeep ymonk yonson2 yshengliao ytxmobile98 yusong-offx zhenggangpku zou8944 SergeShin - BelmonduS Diewald cty4ka martinjanda evan hazmi-e205 jtgoral ky2s lauweliam ozfive paulcockrell paulxu21 pesquive petros9282 phil535 pitt134 poscard qiepeipei qiuzhanghua rapita rbondi relaera remopavithran rfunix rhernandez-itemsoft rikoriswandha risallaw robivictor rubiagatra rubyangxg rxrw saleebm sbenimeli sebyno seun-otosho shobhitsinghal77 solohiroshi su1gen sukiejosh suresh16671 svirmi terjelafton thiennguyen93 unixedia vadgun valsorym vguhesan vpiduri vrocadev vuhoanglam walter-wang martinlindhe mdamschen letmestudy michaelsmanley Curtman SridarDhandapani madrigaltenor opusmagna ShahramMebashar b4zz4r bobmcallan fangli galois-tnp mblandr midhubalan netbaalzovf oliverjosefzimmer peacememories talebisinan valkuere lfaynman ArturWierzbicki aaxx crashCoder derekslenk dochoaj evillgenius75 gog200921 mauricedcastro mwiater sj671 statik supersherm5 thejones CSRaghunandan ndimorle rosales-stephanie shyyawn vcruzato wangbl11 wofka72 geoshan juanxme nguyentamvinhlong yoru74 xsokev oleang michalsz pomland-94 tejzpr theantichris tuxaanand raphael-brand willypuzzle dmcbane malcolm-white-dti HieuLsw carlosmoran092 yangxianglong

📖 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 ?

Couverture du livre

follow author on twitter

follow Iris web framework on twitter

follow Iris web framework on facebook

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.

Liste des contributeurs

🛡 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.