104 KiB
خبرها
🚀 آیریس v14 در راه است. نسخه اصلی بعدی بزرگترین انتشار تاریخ این پروژه است: چارچوبی که بر پایه جنریکهای Go بازسازی شده، سازندهای برای برنامه که کامپایلر آن را بررسی میکند، کمککنندههای درخواست که اعتبارسنجی را برایتان انجام میدهند، یک نقشه مرکزی خطاها، سی میانافزار داخلی و کتابی که همراه خود مخزن منتشر میشود. در ادامه آنچه در Iris v14 خواهد آمد را ببینید.
نسخهای که اینجا توضیح داده میشود، یعنی v12، همچنان کار میکند و همچنان اصلاحات دریافت میکند. v14 روی مسیر ایمپورت تازهای میآید، بنابراین روزی که منتشر شود چیزی در سمت شما نمیشکند.
Iris Web Framework English
العربية
⚡ آیریس یک چارچوب وب پرسرعت، ساده و در عین حال کاملاً برجسته و بسیار کارآمد برای Go است.
✨ آیریس پایهای زیبا، رسا و آسان برای وبسایت یا API بعدی شما فراهم میکند.
🌟 ببینید دیگران درباره آیریس چه میگویند و به این پروژه متنباز یک ستاره بدهید.
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")
}
همانطور که یک توسعهدهنده Go زمانی گفت، آیریس از هر جهت هوای شما را دارد و در گذر سالها استوار ایستاده است ⭐
بخشی از امکاناتی که آیریس ارائه میدهد:
- 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 شما را به هم وصل میکند. ترتیب گامها را کامپایلر تحمیل میکند، پس برنامه یا درست ساخته میشود یا اصلاً ساخته نمیشود.
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 را مینویسد. کمککنندههای پاسخ، وضعیت موفقیت را مینویسند یا هر چیزی که نقشه مرکزی شما برای آن خطا تعیین کرده است.
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 منتقل شد.
پیکربندی یک مقدار جزئی است
iris.Configuration و پیکربندهای With* جای خود را به iris.Options دادهاند. فقط فیلدهایی را که برایتان مهم است بنویسید، بقیه از مقادیر پیشفرض میآیند. Bind ابتدا از متغیر محیطی SERVER_CONFIG و سپس از یک فایل، YAML را میخواند.
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 را دنبال کنید یا @iris_framework را دنبال کنید تا زودتر از همه باخبر شوید.
👑 حامیان
با کمک شما میتوانیم توسعه وب متنباز را برای همه بهتر کنیم!
$ mkdir myapp
$ cd myapp
$ go mod init myapp
$ go get github.com/kataras/iris/v12@latest # یا @v12.2.11
نصب روی پروژه موجود
$ cd myapp
$ go get github.com/kataras/iris/v12@latest
$ go mod tidy -compat=1.23 # در ویندوز -compat="1.23".
$ go run .
آیریس مستندات گسترده و دقیقی دارد که شروع کار با این چارچوب را آسان میکند.
برای مستندات فنی دقیقتر میتوانید به godocs ما سر بزنید. و برای کد قابل اجرا همیشه میتوانید زیرشاخه ./_examples این مخزن را ببینید.
توسعه با Plexon AI
Plexon AI یک دستیار برنامهنویسی مبتنی بر هوش مصنوعی و چندسکویی از Hellenic Development است و یک مهارت (skill) اختصاصی برای آیریس بههمراه دارد: راهنمای توسعه v14 که خودِ نویسنده چارچوب آن را نوشته است، با نوزده سند مرجع درباره مسیریابی و ماکروها، context API، کمککنندههای rest، مدیریت خطا، هر سی میانافزار، کنترلرهای داخلی، SDK احراز هویت، سختسازی امنیتی، ماندگاری داده، کش، i18n، مشاهدهپذیری، کارایی، آزمون، استقرار، و مهاجرت از v12 به v14.
شخصیت (persona) Software Developer را نصب کنید تا مهارت آیریس هم همراهش بیاید، کنار عاملهای مهندسیای که فعال میکند. آنگاه دستیار شما کد آیریس را همانطور که این چارچوب قرار است استفاده شود مینویسد، نه بر اساس حدس از آنچه در آموزش دیده است.
دوست دارید هنگام سفر مطالعه کنید؟
میتوانید همین امروز نسخه PDF و دسترسی آنلاین کتاب الکترونیکی آیریس (ویرایش جدید) را درخواست کنید و در توسعه آیریس سهیم شوید.
🙌 مشارکت
از دیدن مشارکت شما در Iris Web Framework خوشحال میشویم! برای اطلاعات بیشتر درباره نحوه مشارکت در پروژه آیریس، فایل CONTRIBUTING.md را ببینید.
🛡 آسیبپذیریهای امنیتی
اگر آسیبپذیری امنیتی در آیریس پیدا کردید، لطفاً به iris-go@outlook.com ایمیل بزنید. همه آسیبپذیریهای امنیتی بهسرعت رسیدگی میشوند.
📝 پروانه
این پروژه، مانند خود پروژه Go، تحت پروانه BSD سهبندی منتشر شده است.
نام «Iris» از اساطیر یونان الهام گرفته شده است.

