"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > طلب وسيطة حدود الجسم لـ Iris

طلب وسيطة حدود الجسم لـ Iris

تم النشر بتاريخ 2024-11-08
تصفح:813

Request Body Limit Middleware for Iris

ملخص

تعد البرامج الوسيطة Iris Body Limit أداة قوية للتحكم في حجم نصوص الطلبات الواردة في تطبيقات الويب Iris الخاصة بك. من خلال تعيين حد لحجم نصوص الطلب، يمكنك منع العملاء من إرسال حمولات كبيرة جدًا والتي من المحتمل أن تطغى على الخادم الخاص بك أو تؤدي إلى هجمات رفض الخدمة (DoS). تعد هذه البرامج الوسيطة مفيدة بشكل خاص للتطبيقات التي تتعامل مع تحميلات الملفات، أو حمولات JSON، أو أي نوع آخر من البيانات التي يمكن أن تختلف بشكل كبير في الحجم.

لماذا نستخدم البرامج الوسيطة Body Limit؟

حماية

أحد الأسباب الرئيسية لاستخدام البرامج الوسيطة للحد من النص هو تعزيز أمان التطبيق الخاص بك. من خلال الحد من حجم أجسام الطلبات الواردة، يمكنك التخفيف من مخاطر هجمات حجب الخدمة، حيث يرسل المهاجم حمولات كبيرة لاستنفاد موارد الخادم.

أداء

يمكن أن يؤدي تحديد حجم نصوص الطلب أيضًا إلى تحسين أداء التطبيق الخاص بك. يمكن أن تستهلك الحمولات الكبيرة كميات كبيرة من الذاكرة وقدرة المعالجة، مما يؤدي إلى إبطاء الخادم الخاص بك والتأثير على تجربة المستخدم. من خلال تعيين حد معقول، يمكنك التأكد من أن خادمك يظل مستجيبًا وفعالًا.

إدارة الموارد

في التطبيقات التي تتعامل مع تحميلات الملفات أو حمولات JSON الكبيرة، من الضروري إدارة الموارد بفعالية. من خلال تعيين حد للنص، يمكنك منع العملاء من تحميل ملفات كبيرة جدًا أو إرسال كائنات JSON ضخمة يمكن أن تستنزف موارد الخادم الخاص بك.

تثبيت

لاستخدام البرنامج الوسيط bodylimit، يتعين عليك استيراده في تطبيق Iris الخاص بك:

import "github.com/kataras/iris/v12/middleware/bodylimit"

الاستخدام

الإعداد الأساسي

لاستخدام البرنامج الوسيط لتحديد الجسم، تحتاج إلى إنشاء تطبيق Iris وتسجيل البرنامج الوسيط. فيما يلي مثال لكيفية إعداد البرنامج الوسيط بحد أقصى 2 ميجابايت:

package main

import (
    "github.com/kataras/iris/v12"
    "github.com/kataras/iris/v12/middleware/bodylimit"
)

func main() {
    app := iris.New()
    app.Use(bodylimit.New(2 * iris.MB)) // set the limit to 2 MB.

    handler := func(ctx iris.Context) {
        body, err := ctx.Body()
        if err != nil {
            ctx.StopWithPlainError(iris.StatusInternalServerError, err)
            return
        }

        ctx.Write(body) // write the request body back to the client.
    }

    app.Post("/", handler)
    app.Listen(":8080")
}

توضيح

  • Limit: تأخذ الدالة bodylimit.New معلمة واحدة، وهي الحد الأقصى لحجم نص الطلب بالبايت. في المثال أعلاه، تم تعيين الحد على 10 بايت.
  • المعالج: يقرأ المعالج نص الطلب ويعيد كتابته إلى الاستجابة. إذا تجاوز نص الطلب الحد الأقصى، فستقوم البرامج الوسيطة بإيقاف الطلب وإرجاع حالة كيان الطلب 413 كبيرة جدًا.
  • تستخدم البرامج الوسيطة للحد من النص برنامج sync.Pool لإدارة مثيلات القارئ، والتي تُستخدم لقراءة نص الطلب وفرض حد الحجم. يضمن هذا الأسلوب استخدامًا فعالاً للذاكرة ويقلل من الحمل الزائد لإنشاء مثيلات Reader الجديدة لكل طلب.

معالجات الاختبار باستخدام BodyLimit الوسيطة

لاختبار المعالجات التي تستخدم البرنامج الوسيط BodyLimit، يمكنك استخدام حزمة httptest المقدمة من Iris. فيما يلي مثال لكيفية اختبار المعالج:

package main_test

import (
    "testing"

    "github.com/kataras/iris/v12"
    "github.com/kataras/iris/v12/httptest"
    "github.com/kataras/iris/v12/middleware/bodylimit"
)

func TestBodyLimit(t *testing.T) {
    limit := int64(10) // set the limit to 10 bytes for the shake of the test.

    handler := func(ctx iris.Context) {
        body, err := ctx.Body()
        if err != nil {
            ctx.StopWithPlainError(iris.StatusInternalServerError, err)
            return
        }
        ctx.Write(body)
    }

    app := iris.New()
    app.Use(bodylimit.New(limit))
    app.Post("/", handler)

    e := httptest.New(t, app)

    // Test with a body that is smaller than the limit.
    e.POST("/").WithText("123456789").Expect().Status(iris.StatusOK).Body().IsEqual("123456789")

    // Test with a body that is equal to the limit.
    e.POST("/").WithText("1234567890").Expect().Status(iris.StatusOK).Body().IsEqual("1234567890")

    // Test with a body that is bigger than the limit.
    e.POST("/").WithText("12345678910").Expect().Status(iris.StatusRequestEntityTooLarge)
}

خاتمة

توفر البرامج الوسيطة Iris Body Limit طريقة بسيطة ولكنها فعالة للتحكم في حجم نصوص الطلبات الواردة في تطبيقات الويب Iris الخاصة بك. من خلال تعيين حد لحجم نصوص الطلب، يمكنك تحسين الأمان والأداء وإدارة الموارد لتطبيقك. بفضل التكامل السهل والميزات المتقدمة، تعد هذه البرامج الوسيطة أداة قيمة لأي مطور لـ Iris.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/kataras/request-body-limit-middleware-for-iris-4999?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3