«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Запросить промежуточное программное обеспечение Body Limit для Iris

Запросить промежуточное программное обеспечение Body Limit для Iris

Опубликовано 8 ноября 2024 г.
Просматривать:601

Request Body Limit Middleware for Iris

Обзор

Промежуточное программное обеспечение Iris Body Limit — это мощный инструмент для управления размером тел входящих запросов в ваших веб-приложениях Iris. Установив ограничение на размер тела запроса, вы можете запретить клиентам отправлять слишком большие полезные данные, которые потенциально могут перегрузить ваш сервер или привести к атакам типа «отказ в обслуживании» (DoS). Это промежуточное программное обеспечение особенно полезно для приложений, обрабатывающих загрузку файлов, полезную нагрузку JSON или любые другие типы данных, размер которых может значительно различаться.

Зачем использовать промежуточное ПО Body Limit?

Безопасность

Одной из основных причин использования промежуточного программного обеспечения ограничения тела является повышение безопасности вашего приложения. Ограничивая размер тела входящего запроса, вы можете снизить риск DoS-атак, когда злоумышленник отправляет большие полезные данные, чтобы истощить ресурсы сервера.

Производительность

Ограничение размера тела запроса также может повысить производительность вашего приложения. Большие полезные нагрузки могут потреблять значительные объемы памяти и вычислительной мощности, замедляя работу вашего сервера и влияя на взаимодействие с пользователем. Установив разумный предел, вы можете гарантировать, что ваш сервер останется отзывчивым и эффективным.

Управление ресурсами

В приложениях, которые обрабатывают загрузку файлов или большие полезные данные 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 Request Entity Too Large.
  • Промежуточное ПО ограничения размера тела использует sync.Pool для управления экземплярами Reader, которые используются для чтения тела запроса и обеспечения соблюдения ограничения размера. Такой подход обеспечивает эффективное использование памяти и снижает затраты на создание новых экземпляров 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