Rails Insights

Deall Middleware Rack yn Ruby

Mae Rack yn fframwaith pwerus ar gyfer adeiladu gwefannau a gwasanaethau gwe yn Ruby. Mae'n cynnig strwythur sy'n caniatáu i ddatblygwyr greu cymwysiadau gwe sy'n hawdd eu rheoli a'u cynnal. Un o'r elfennau allweddol o Rack yw'r cysyniad o "middleware". Yn yr erthygl hon, byddwn yn archwilio beth yw middleware, sut mae'n gweithio, a sut i'w ddefnyddio yn eich cymwysiadau Ruby.

Beth yw Middleware?

Mae middleware yn ddarn o god sy'n gweithredu fel pont rhwng y gweinydd a'r cais. Mae'n caniatáu i chi ychwanegu gweithrediadau penodol cyn neu ar ôl i'r cais gael ei brosesu. Mae'n ddefnyddiol ar gyfer gweithrediadau fel dilysu, logio, a chynnal cyfyngiadau ar gais.

Pam Mae Middleware yn Hanfodol?

Mae middleware yn hanfodol am nifer o resymau:

  • Modwlariaeth: Mae'n caniatáu i chi rannu eich cod yn ddarnau llai, sy'n haws eu rheoli.
  • Adferadwyedd: Gallwch ail-ddefnyddio middleware ar gyfer cymwysiadau eraill.
  • Gwelliannau: Mae'n hawdd ychwanegu neu ddirymu middleware heb effeithio ar y cod sylfaenol.

Sut Mae Middleware yn Gweithio?

Mae middleware yn gweithredu fel rhestr o ddarnau o god sy'n cael eu galw yn ôl i'w gilydd. Mae pob darn o middleware yn derbyn tri pharamedr: y cais, y gweinydd, a'r nesaf. Mae'r nesaf yn ddarn o god sy'n galw'r middleware nesaf yn y rhestr.

Strwythur Middleware

Mae strwythur sylfaenol middleware yn edrych fel hyn:

class MyMiddleware
  def initialize(app)
    @app = app
  end

  def call(env)
    # Gweithrediadau cyn y cais
    puts "Cais yn dechrau"

    # Galw'r middleware nesaf
    status, headers, response = @app.call(env)

    # Gweithrediadau ar ôl y cais
    puts "Cais wedi gorffen"

    [status, headers, response]
  end
end

Creu Middleware yn Ruby

Mae creu middleware yn Ruby yn syml. Gallwch ddefnyddio'r strwythur a ddisgrifiwyd uchod i greu eich middleware eich hun. Dyma enghraifft o middleware sy'n logio'r amser a gymerwyd i brosesu cais:

class TimingMiddleware
  def initialize(app)
    @app = app
  end

  def call(env)
    start_time = Time.now

    status, headers, response = @app.call(env)

    duration = Time.now - start_time
    puts "Cais wedi cymryd #{duration} eiliad"

    [status, headers, response]
  end
end

Defnyddio Middleware yn eich Cais Rack

Unwaith y byddwch wedi creu eich middleware, gallwch ei ddefnyddio yn eich cais Rack. Dyma sut i'w wneud:

require 'rack'

class MyApp
  def call(env)
    [200, { 'Content-Type' => 'text/plain' }, ['Helo, Byd!']]
  end
end

app = Rack::Builder.new do
  use TimingMiddleware
  run MyApp.new
end

Rack::Handler::WEBrick.run app

Mathau o Middleware

Mae nifer o fathau o middleware y gallwch eu defnyddio yn eich cymwysiadau Ruby. Dyma rai o'r rhai mwyaf poblogaidd:

  • Middleware Dilysu: Defnyddir i wirio a yw defnyddiwr wedi mewngofnodi cyn caniatáu mynediad i'r cais.
  • Middleware Logio: Defnyddir i gofrestru gwybodaeth am geisiadau, megis amseroedd ymateb a statws.
  • Middleware Cynnwys: Gallwch ddefnyddio hwn i newid cynnwys y cais neu'r ymateb.
  • Middleware Cyfyngiadau: Defnyddir i gyfyngu ar nifer y ceisiadau a dderbynnir gan ddefnyddiwr penodol.

Defnyddio Middleware o'r Gymuned

Mae llawer o middleware ar gael o'r gymuned Ruby. Mae rhai o'r rhai mwyaf poblogaidd yn cynnwys:

  • Rack::Session: Defnyddir i reoli sesiynau defnyddwyr.
  • Rack::Protection: Mae'n cynnig amddiffyniadau yn erbyn bygythiadau cyffredin fel CSRF a XSS.
  • Rack::Cors: Defnyddir i reoli CORS (Cross-Origin Resource Sharing).

Gweithredu Middleware yn y Gweinydd

Pan fyddwch yn gweithredu middleware yn y gweinydd, mae'n bwysig sicrhau bod y middleware yn cael ei ddefnyddio yn y drefn gywir. Mae'r drefn yn bwysig oherwydd gallai newid y ffordd y mae'r cais yn cael ei brosesu. Mae'n arfer da rhoi middleware sy'n gweithredu ar y dechrau, fel logio a dilysu, cyn middleware sy'n newid y cais neu'r ymateb.

Enwogion Middleware

Mae rhai o'r middleware mwyaf poblogaidd yn cynnwys:

  • Rack::Static: Defnyddir i wasanaethu ffeiliau statig fel CSS a JavaScript.
  • Rack::Deflater: Mae'n gwasgu'r ymateb i leihau maint y data a drosglwyddir.
  • Rack::Logger: Mae'n logio gwybodaeth am geisiadau a ymatebion.

Casgliad

Mae middleware yn elfen hanfodol o Rack a Ruby, gan ei gwneud yn bosibl i ddatblygwyr greu cymwysiadau gwe mwy modiwlar a hawdd eu cynnal. Trwy ddeall sut mae middleware yn gweithio a sut i'w ddefnyddio, gallwch wella perfformiad a diogelwch eich cymwysiadau. Mae'r byd o middleware yn eang, ac mae llawer o adnoddau ar gael i'ch helpu i archwilio a datblygu eich gwybodaeth ymhellach.

Felly, peidiwch ag oedi! Dechreuwch greu eich middleware eich hun a mwynhewch y broses o adeiladu cymwysiadau gwe yn Ruby.

Published: August 12, 2024

© 2024 RailsInsights. All rights reserved.