Sobes.tech
Middle

Программаларда middleware эмне үчүн колдонулат?

sobes.tech AI

AIден жооп

Веб-колдонмолордо аралык программалык камсыздоо — бул HTTP суроо-талаптары жана жоопторун иштеткен аралык программалык камсыздоо. Ал веб-сервер менен колдонмонун негизги логикасынын ортосунда жайгашкан.

Аралык программалык камсыздоонун негизги милдеттери:

  • Суроону алдын ала иштетүү:
    • Колдонуучунун аутентификациясы жана уруксат берүү.
    • Кирүү маалыматтарын талдоо (JSON, XML жана башка).
    • Суроонун маалыматтарын текшерүү.
    • Суроолорду журналга жазуу.
    • Суроого башталыштарды кошуу.
  • Жоопту кийинчерээк иштетүү:
    • Жоопту өзгөртүү, аны жөнөтүүдөн мурун (мисалы, башталыштарды кошуу):
    • Жоопту кысуу.
    • Каталар менен иштөө (чыгаруулар):
  • Иштин агымын башкаруу: Аралык программалык камсыздоо суроо иштетүүнү үзгүлтүккө учуратпайт жана жоопту эрте стадияда кайтарат (мисалы, укук жоктугу учурда).

Аралык программалык камсыздоону колдонуу артыкчылыктары:

  • Модулдук: милдеттерди бөлүү, кайра колдонулуучу компоненттерге бөлүү.
  • Ийкемдүү: негизги логиканы өзгөртпөстөн функцияларды оңой кошуу же алып салуу.
  • Коддун окуулушу: программаны түзүүнүн структурасын жакшыртуу, үзгүлтүксүз операцияларды бөлүп көрсөтүү аркылуу.
  • Тестирлөө мүмкүнчүлүгү: жеке аралык программалык камсыздоо оңой тесттелет.

PHP-фреймворктарда (мисалы, Laravel, Symfony, Slim) аралык программалык камсыздоо көбүнесе класстар түрүндө ишке ашырылат, алар белгилүү интерфейсти ишке ашырат:

<?php

// Аралык программалык камсыздоонун структурасынын мисалы (интерфейс)
interface RequestHandlerInterface {
    public function handle(RequestInterface $request): ResponseInterface;
}

// Аралык программалык камсыздоонун ишке ашырылышы (авторизация)
class AuthenticationMiddleware implements RequestHandlerInterface {
    public function handle(RequestInterface $request): ResponseInterface {
        // Авторизацияны текшерүү
        if (!isAuthenticated()) {
            // Эгер колдонуучу авторизацияланбаган болсо, ишти үзгүлтүккө учуратуу жана каттоо
            return new Response(401, [], 'Unauthorized');
        }

        // Эгер бардык нерсе жакшы болсо, суроону кийинки иштетүүчүгө өткөрүү (же негизги логикага)
        return $this->nextHandler->handle($request);
    }
}