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](#-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](https://img.shields.io/github/actions/workflow/status/kataras/iris/ci.yml?branch=main&style=for-the-badge)](https://github.com/kataras/iris/actions/workflows/ci.yml) [![view examples](https://img.shields.io/badge/examples%20-285-a83adf.svg?style=for-the-badge&logo=go)](https://github.com/kataras/iris/tree/main/_examples) [![chat](https://img.shields.io/gitter/room/iris_go/community.svg?color=cc2b5e&logo=gitter&style=for-the-badge)](https://gitter.im/iris_go/community) [![donate](https://img.shields.io/badge/support-Iris-blue.svg?style=for-the-badge&logo=paypal)](https://iris-go.com/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](https://www.iris-go.com/#review) et **[Ă©toilez](https://github.com/kataras/iris/stargazers)** ce projet open source [![](https://iris-go.com/static/images/reviews.gif)](https://iris-go.com/testimonials/) [![Benchmarks: Jul 18, 2020 at 10:46am (UTC)](https://iris-go.com/static/images/benchmarks.svg)](https://github.com/kataras/server-benchmarks) ```go 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 %s!", "World") }) app.Listen(":8080") } ``` Comme l'a dit un jour un [dĂ©veloppeur Go](https://twitter.com/dkuye/status/1532087942696554497), **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. ```go 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. ```go 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](https://github.com/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. ```go 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](https://github.com/kataras/iris/releases) ou suivez [@iris_framework](https://twitter.com/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](https://go.dev/dl/). #### CrĂ©er un nouveau projet ```sh $ 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 ```sh $ cd myapp $ go get github.com/kataras/iris/v12@latest ``` **Exécuter** ```sh $ go mod tidy -compat=1.23 # -compat="1.23" sous windows. $ go run . ```
![](https://www.iris-go.com/images/gifs/install-create-iris.gif) Iris possĂšde une **[documentation](https://www.iris-go.com/docs)** 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](https://pkg.go.dev/github.com/kataras/iris/v12@v12.2.11). Et pour du code exĂ©cutable vous trouverez toujours le sous-dossier [./_examples](_examples) du dĂ©pĂŽt. ### DĂ©velopper avec Plexon AI [Plexon AI](https://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](https://img.shields.io/twitter/follow/makismaropoulos?color=3D8AA3&logoColor=3D8AA3&style=for-the-badge&logo=twitter)](https://twitter.com/intent/follow?screen_name=makismaropoulos) [![follow Iris web framework on twitter](https://img.shields.io/twitter/follow/iris_framework?color=ee7506&logoColor=ee7506&style=for-the-badge&logo=twitter)](https://twitter.com/intent/follow?screen_name=iris_framework) [![follow Iris web framework on facebook](https://img.shields.io/badge/Follow%20%40Iris.framework-569-2D88FF.svg?style=for-the-badge&logo=facebook)](https://www.facebook.com/iris.framework) Vous pouvez [demander](https://www.iris-go.com/#ebookDonateForm) 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](CONTRIBUTING.md). [Liste des contributeurs](https://github.com/kataras/iris/graphs/contributors) ## 🛡 SĂ©curitĂ© et vulnĂ©rabilitĂ©s Si vous trouvez une vulnĂ©rabilitĂ© dans Iris, envoyez un e-mail Ă  [iris-go@outlook.com](mailto:iris-go@outlook.com). Toute vulnĂ©rabilitĂ© sera corrigĂ©e aussi rapidement que possible. ## 📝 Licence Le projet est sous [licence BSD 3 clauses](LICENSE), tout comme le langage Go lui-mĂȘme. Le nom "Iris" est inspirĂ© de la mythologie grecque.