Middleware у Sinatra - це шлях додаткової обробки запитів, яка виконується перед або після обробки основного коду маршруту. Вони дозволяють вам вставляти логіку до циклу обробки запитів у вашому додатку. Ось як ви можете використовувати middleware у Sinatra:
-
Вбудовані middleware: Sinatra має кілька вбудованих middleware, які можна активувати з допомогою виклику
use
. Наприклад,Sinatra::Session
для роботи з сесіями. -
Свої 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
-
Порядок виконання: Middleware виконуються в порядку їх додавання до додатку. Middleware, що вказані першими, виконуються раніше.
-
Зупинка ланцюга виконання: Middleware можуть приймати рішення про те, чи продовжувати вони передавати обробку до наступних middleware та основного обробника запиту.
Використання middleware дозволяє вам розширити функціональність вашого додатку, додавши додаткову логіку, логування, аутентифікацію тощо.