خبرها

> 🚀 **آیریس v14 در راه است.** نسخه اصلی بعدی بزرگ‌ترین انتشار تاریخ این پروژه است: چارچوبی که بر پایه جنریک‌های Go بازسازی شده، سازنده‌ای برای برنامه که کامپایلر آن را بررسی می‌کند، کمک‌کننده‌های درخواست که اعتبارسنجی را برایتان انجام می‌دهند، یک نقشه مرکزی خطاها، سی میان‌افزار داخلی و کتابی که همراه خود مخزن منتشر می‌شود. در ادامه [آنچه در Iris v14 خواهد آمد](#-آنچه-در-iris-v14-خواهد-آمد) را ببینید. > > نسخه‌ای که اینجا توضیح داده می‌شود، یعنی **v12**، همچنان کار می‌کند و همچنان اصلاحات دریافت می‌کند. v14 روی مسیر ایمپورت تازه‌ای می‌آید، بنابراین روزی که منتشر شود چیزی در سمت شما نمی‌شکند.
# 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)
⚡ آیریس یک چارچوب وب پرسرعت، ساده و در عین حال کاملاً برجسته و بسیار کارآمد برای Go است. ✨ آیریس پایه‌ای زیبا، رسا و آسان برای وب‌سایت یا API بعدی شما فراهم می‌کند. 🌟 ببینید [دیگران درباره آیریس چه می‌گویند](https://www.iris-go.com/#review) و به این پروژه متن‌باز یک **[ستاره](https://github.com/kataras/iris/stargazers)** بدهید.
[![](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") } ```
همان‌طور که یک [توسعه‌دهنده Go](https://twitter.com/dkuye/status/1532087942696554497) زمانی گفت، **آیریس از هر جهت هوای شما را دارد و در گذر سال‌ها استوار ایستاده است** ⭐ بخشی از امکاناتی که آیریس ارائه می‌دهد: * HTTP/2 (Push، حتی داده‌های جاسازی‌شده) * میان‌افزارها (Accesslog، Basicauth، CORS، gRPC، ضدربات hCaptcha، JWT، MethodOverride، ModRevision، Monitor، PPROF، Ratelimit، ضدربات reCaptcha، Recovery، RequestID، Rewrite) * نسخه‌بندی API * Model-View-Controller * Websockets * gRPC * HTTPS خودکار * پشتیبانی داخلی از ngrok، سریع‌ترین راه برای رساندن برنامه شما به اینترنت * مسیریاب یکتا با مسیرهای پویا به‌عنوان پارامتر، با انواع استاندارد مانند ‎:uuid‎، ‎:string‎، ‎:int‎... و امکان ساخت انواع دلخواه * فشرده‌سازی * موتورهای نمایش (HTML، Django، Handlebars، Pug/Jade و بیشتر) * ساخت فایل‌سرور اختصاصی خودتان و میزبانی سرور WebDAV خودتان * کش * بومی‌سازی (i18n، sitemap) * نشست‌ها (Sessions) * پاسخ‌های غنی (HTML، Text، Markdown، XML، YAML، Binary، JSON، JSONP، Protocol Buffers، MessagePack، Content Negotiation، Streaming، Server-Sent Events و بیشتر) * فشرده‌سازی پاسخ (gzip، deflate، brotli، snappy، s2) * درخواست‌های غنی (اتصال URL Query، Headers، Form، Text، XML، YAML، Binary، JSON، اعتبارسنجی، Protocol Buffers، MessagePack و بیشتر) * تزریق وابستگی (MVC، Handlers، API Routers) * مجموعه ابزار آزمون * و مهم‌تر از همه... از روز اول تا امروز پاسخ سریع و پشتیبانی دریافت می‌کنید ## 🚀 آنچه در Iris v14 خواهد آمد آیریس v14 بزرگ‌ترین انتشار تاریخ این پروژه است. چارچوب را روی جنریک‌های Go بازسازی می‌کند و شیوه سرهم‌کردن یک برنامه را تغییر می‌دهد: سیم‌کشی کمتر در `main`، هندلرهای کوتاه‌تر، و یک جای واحد برای تصمیم‌هایی که پیش‌تر روی تک‌تک مسیرها پخش بودند. هیچ‌کدام از اینها امروز به توجه شما نیاز ندارد. v12 همچنان کار می‌کند، همچنان اصلاح می‌شود، و v14 همراه با راهنمای مهاجرتی می‌آید که هر API تغییرنام‌یافته یا حذف‌شده را پوشش می‌دهد. ### کل برنامه در یک زنجیره که کامپایلر آن را بررسی می‌کند `iris.NewBuilder` در یک عبارت واحد، CORS، فشرده‌سازی، ثبت دسترسی، نقطه پایانی سلامت، نقشه خطاها، سرویس‌ها و گروه‌های API شما را به هم وصل می‌کند. ترتیب گام‌ها را کامپایلر تحمیل می‌کند، پس برنامه یا درست ساخته می‌شود یا اصلاً ساخته نمی‌شود.
```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") ```
### هندلرها دیگر خودشان را تکرار نمی‌کنند رمزگشایی، اعتبارسنجی و نمایش خطا از بدنه هندلر بیرون می‌روند. `rest.ReadJSON[T]` درخواست را رمزگشایی می‌کند، در صورت وجود متد `Validate() error` روی نوع شما آن را اجرا می‌کند و خودش پاسخ 400 را می‌نویسد. کمک‌کننده‌های پاسخ، وضعیت موفقیت را می‌نویسند یا هر چیزی که نقشه مرکزی شما برای آن خطا تعیین کرده است.
```go func (api *ProductsAPI) create(ctx iris.Context) { input, ok := rest.ReadJSON[catalog.ProductInput](ctx) if !ok { return // پاسخ 400 نوشته شده است: JSON نامعتبر یا شکست Validate. } id, err := api.svc.Create(ctx, input) rest.Created(ctx, id, err) // 201، یا خطای نگاشت‌شده به‌صورت مرکزی. } ```
`rest.OK`، `rest.NoContent`، `rest.Count` و `rest.Paginated` بقیه شکل‌هایی را که یک API برمی‌گرداند پوشش می‌دهند. ### خطاها فقط یک بار اعلام می‌شوند بسته تازه `rest/errors` نگاشت خطاهای دامنه شما به پاسخ‌های HTTP را نگه می‌دارد. کلاینت‌ها بار داده‌ای استاندارد و ماشین‌خوان دریافت می‌کنند. پیام‌های داخلی داخلی می‌مانند. یک collector ثبت کنید تا هر شکست از یک نقطه واحد به لاگر یا پایگاه‌داده شما برسد. یک خطا بسته به آنچه کلاینت خواسته است می‌تواند به‌صورت JSON یا به‌صورت view نمایش داده شود. ### تزریق وابستگی همه‌جا، نه فقط در MVC سازنده‌ها اعلام می‌کنند به چه چیزی نیاز دارند و کانتینر آن را فراهم می‌کند: برای هندلرها، برای گروه‌های API، برای کنترلرها. سرویسی که `Init(ctx context.Context) error` را پیاده‌سازی کند یک بار درون `Build()` اجرا می‌شود. هر چیزی که قابل بستن باشد هنگام خاموشی بسته می‌شود. بسته `hero` حذف شده و جای آن را `dep` و `rest` گرفته‌اند که با کد کمتر کار بیشتری انجام می‌دهند. کنترلرهای MVC روی جنریک‌ها ساخته شده‌اند. ### بسته‌ها همان‌جایی هستند که انتظارش را دارید `sessions`، `cache`، `websocket`، `i18n`، `view` و `versioning` به میان‌افزار تبدیل شدند. `mvc` به زیر `controller` منتقل شد، کنار کنترلرهای تازه `fileserver`، `sitemap` و `apigraph`. بسته `apigraph` درخت مسیرهای شما را به‌صورت یک گراف تعاملی D3 ترسیم می‌کند. سی میان‌افزار به‌صورت آماده عرضه می‌شوند، از جمله موارد تازه: `httpcost` (زمان، حافظه و CPU به‌ازای هر درخواست، برای کار روی کارایی یا صورتحساب)، `bodylimit`، `compress`، `counter`، `referrer`، `geolocation`، `ipaccess` و `servertiming`. پیاده‌سازی موتورهای نمایش به [iris-contrib/views](https://github.com/iris-contrib/views) منتقل شد. ### پیکربندی یک مقدار جزئی است `iris.Configuration` و پیکربندهای `With*` جای خود را به `iris.Options` داده‌اند. فقط فیلدهایی را که برایتان مهم است بنویسید، بقیه از مقادیر پیش‌فرض می‌آیند. `Bind` ابتدا از متغیر محیطی `SERVER_CONFIG` و سپس از یک فایل، YAML را می‌خواند.
```go app := iris.New(iris.Options{Name: "myapp", LogLevel: "debug"}) ```
### نام‌هایی که می‌گویند چه کاری می‌کنند خواندن سرایند درخواست و تنظیم سرایند پاسخ دیگر پیشوند مشترکی ندارند که بی‌سروصدا معنایش عوض شود: `ctx.Header` درخواست را می‌خواند، در حالی که `ctx.SetHeader` و `ctx.ResponseHeader` روی پاسخ کار می‌کنند. `Party` حالا `Router` است. `ctx.URLParam` حالا `ctx.Query().Get` است. هر تغییرنامی همراه با جایگزینش در راهنمای مهاجرت آمده و بیشترشان با یک جست‌وجو و جایگزینی حل می‌شوند. ### امن به‌صورت پیش‌فرض کوکی‌های نشست با `Secure` و `SameSite=Lax` ارسال می‌شوند. محدودیت اندازه بدنه درخواست در همه مسیرهای خواندن اعمال می‌شود. همراه با این بازسازی، باگ‌های دیرینه هم برطرف شدند؛ از جمله محدودکننده نرخی که محدودیت‌ها را ثبت می‌کرد اما هرگز اعمال نمی‌کرد، و فراخوانی `Logout` که می‌توانست کل پردازه را از بین ببرد. ### مستنداتی که از ابتدا تا انتها خواندنی است v14 با کتابی ۲۳ فصلی درون مخزن، آموزشی گام‌به‌گام که یک REST API آزمون‌شده را در یک سند می‌سازد، راهنمای مهاجرت برای برنامه‌های v12، و یک ویکی هوش مصنوعی زنده که از روی کد تولید می‌شود و به پرسش‌های شما درباره کد پاسخ می‌دهد عرضه می‌شود. ### این برای کد v12 شما چه معنایی دارد مسیر ایمپورت به `github.com/kataras/iris/v14` تغییر می‌کند، بنابراین v12 و v14 می‌توانند کنار هم بمانند و روز انتشار چیزی نمی‌شکند. هر وقت برایتان مناسب بود ارتقا دهید. راهنمای مهاجرت مسیر ایمپورت، جابه‌جایی بسته‌ها، هر API حذف‌شده و جایگزینش، و تغییرات رفتاری را پوشش می‌دهد و برای بخش‌های ماشینی، دستورهای آماده می‌دهد. هنوز تاریخ انتشار عمومی اعلام نشده است. [releases](https://github.com/kataras/iris/releases) را دنبال کنید یا [@iris_framework](https://twitter.com/iris_framework) را دنبال کنید تا زودتر از همه باخبر شوید. ## 👑 حامیان با کمک شما می‌توانیم توسعه وب متن‌باز را برای همه بهتر کنیم!

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

## 📖 یادگیری آیریس ### نصب تنها پیش‌نیاز، [زبان برنامه‌نویسی Go](https://go.dev/dl/) است. #### ساخت پروژه جدید
```sh $ mkdir myapp $ cd myapp $ go mod init myapp $ go get github.com/kataras/iris/v12@latest # یا @v12.2.11 ```
نصب روی پروژه موجود ```sh $ cd myapp $ go get github.com/kataras/iris/v12@latest ``` ```sh $ go mod tidy -compat=1.23 # در ویندوز -compat="1.23". $ go run . ```
![](https://www.iris-go.com/images/gifs/install-create-iris.gif)
آیریس **[مستندات](https://www.iris-go.com/docs)** گسترده و دقیقی دارد که شروع کار با این چارچوب را آسان می‌کند. برای مستندات فنی دقیق‌تر می‌توانید به [godocs](https://pkg.go.dev/github.com/kataras/iris/v12@v12.2.11) ما سر بزنید. و برای کد قابل اجرا همیشه می‌توانید زیرشاخه [./_examples](_examples) این مخزن را ببینید. ### توسعه با Plexon AI [Plexon AI](https://plexon.ai) یک دستیار برنامه‌نویسی مبتنی بر هوش مصنوعی و چندسکویی از Hellenic Development است و یک **مهارت (skill) اختصاصی برای آیریس** به‌همراه دارد: راهنمای توسعه v14 که خودِ نویسنده چارچوب آن را نوشته است، با نوزده سند مرجع درباره مسیریابی و ماکروها، context API، کمک‌کننده‌های `rest`، مدیریت خطا، هر سی میان‌افزار، کنترلرهای داخلی، SDK احراز هویت، سخت‌سازی امنیتی، ماندگاری داده، کش، i18n، مشاهده‌پذیری، کارایی، آزمون، استقرار، و مهاجرت از v12 به v14. شخصیت (persona) **Software Developer** را نصب کنید تا مهارت آیریس هم همراهش بیاید، کنار عامل‌های مهندسی‌ای که فعال می‌کند. آن‌گاه دستیار شما کد آیریس را همان‌طور که این چارچوب قرار است استفاده شود می‌نویسد، نه بر اساس حدس از آنچه در آموزش دیده است. ### دوست دارید هنگام سفر مطالعه کنید؟
Book cover [![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)
می‌توانید همین امروز نسخه PDF و دسترسی آنلاین **کتاب الکترونیکی آیریس** (ویرایش جدید) را [درخواست کنید](https://www.iris-go.com/#ebookDonateForm) و در توسعه آیریس سهیم شوید. ## 🙌 مشارکت از دیدن مشارکت شما در Iris Web Framework خوشحال می‌شویم! برای اطلاعات بیشتر درباره نحوه مشارکت در پروژه آیریس، فایل [CONTRIBUTING.md](CONTRIBUTING.md) را ببینید. [فهرست همه مشارکت‌کنندگان](https://github.com/kataras/iris/graphs/contributors) ## 🛡 آسیب‌پذیری‌های امنیتی اگر آسیب‌پذیری امنیتی در آیریس پیدا کردید، لطفاً به [iris-go@outlook.com](mailto:iris-go@outlook.com) ایمیل بزنید. همه آسیب‌پذیری‌های امنیتی به‌سرعت رسیدگی می‌شوند. ## 📝 پروانه این پروژه، مانند خود پروژه Go، تحت [پروانه BSD سه‌بندی](LICENSE) منتشر شده است. نام «Iris» از اساطیر یونان الهام گرفته شده است.