Middleware у Sinatra

Middleware у Sinatra - це шлях додаткової обробки запитів, яка виконується перед або після обробки основного коду маршруту. Вони дозволяють вам вставляти логіку до циклу обробки запитів у вашому додатку. Ось як ви можете використовувати middleware у Sinatra:

  1. Вбудовані middleware: Sinatra має кілька вбудованих middleware, які можна активувати з допомогою виклику use. Наприклад, Sinatra::Session для роботи з сесіями.

  2. Свої middleware: Ви також можете створити власні middleware, що реалізують вашу власну логіку обробки. Middleware - це просто Ruby-класи, які включають метод call, який приймає параметр env (середовище) і повертає масив з трьома елементами: status, headers та body.

    Наприклад, middleware, яке логує кожен запит:

    class LoggerMiddleware
      def initialize(app)
        @app = app
      end
    
      def call(env)
        puts "Request: #{env['REQUEST_METHOD']} #{env['REQUEST_URI']}"
        status, headers, body = @app.call(env)
        [status, headers, body]
      end
    end
    
    use LoggerMiddleware
    
  3. Порядок виконання: Middleware виконуються в порядку їх додавання до додатку. Middleware, що вказані першими, виконуються раніше.

  4. Зупинка ланцюга виконання: Middleware можуть приймати рішення про те, чи продовжувати вони передавати обробку до наступних middleware та основного обробника запиту.

Використання middleware дозволяє вам розширити функціональність вашого додатку, додавши додаткову логіку, логування, аутентифікацію тощо.