میان‌افزار یک مکانیسم است که اجازه می‌دهد تا کد قبل یا بعد از اجرای کد اصلی در چرخه عمر یک درخواست HTTP اجرا شود. می‌توان آن را به عنوان یک هوک در چارچوبی تصور کرد که تمام درخواست‌ها و پاسخ‌ها را رهگیری می‌کند.

استفاده از میان‌افزار در iris

شما می‌توانید میان‌افزار را از طریق متد Use در iris برای مسیرها ثبت کنید.

package main

// وارد کردن پکیج
import "github.com/kataras/iris/v12"

func main() {
  // تعریف نمونه iris
  app := iris.New()
  // استفاده از میان‌افزار فشرده‌سازی gzip
  app.Use(iris.Compression)

  // تنظیمات مسیر
  app.Get("/", func(ctx iris.Context) {
    ctx.HTML("Hello <strong>%s</strong>!", "World")
  })

  // گوش دادن به پورت
  app.Listen(":8080")
}

سفارشی‌سازی میان‌افزار در iris

// امضای تابع سفارشی میان‌افزار
func Logger() iris.Handler {
    // از طریق بسته بندی و بازگشت دهنده‌ی دستگاه
    return func(ctx iris.Context) {
        t := time.Now()

        // تنظیم اطلاعات
        ctx.Values().Set("framework", "iris")

        // منطق قبل از درخواست

        ctx.Next()

        // منطق بعد از درخواست
        latency := time.Since(t)
        log.Print(latency)

        // دسترسی به وضعیت ارسال شده
        status := ctx.GetStatusCode()
        log.Println(status)
    }
}

func main() {
    app := iris.New()
    // ثبت میان‌افزار سفارشی
    app.Use(Logger())

    app.Get("/test", func(ctx iris.Context) {
        // خواندن پارامترهای تنظیم شده توسط میان‌افزار
        framework := ctx.Values().GetString("framework")

        // این دستور: "iris" را چاپ خواهد کرد
        log.Println(framework)
    })

    app.Listen(":8080")
}