Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Complete Example

Here’s a complete example demonstrating the API:

class App < Uzumibi::Router
  # Simple GET route
  get "/" do |req, res|
    res.status_code = 200
    res.headers = {
      "Content-Type" => "text/plain",
      "X-Powered-By" => "Uzumibi"
    }
    res.body = "Welcome to Uzumibi!"
    res
  end

  # Path parameters
  get "/users/:id" do |req, res|
    user_id = req.params[:id]
    res.status_code = 200
    res.headers = { "Content-Type" => "application/json" }
    res.body = JSON.generate({ id: user_id, name: "User #{user_id}" })
    res
  end

  # Query parameters
  get "/search" do |req, res|
    query = req.params[:q] || ""
    res.status_code = 200
    res.body = "Searching for: #{query}"
    res
  end

  # POST with body
  post "/api/data" do |req, res|
    debug_console("[Uzumibi] Received: #{req.body}")
    
    res.status_code = 200
    res.headers = { "Content-Type" => "text/plain" }
    res.body = "Received #{req.body.size} bytes"
    res
  end

  # Redirect
  get "/old-path" do |req, res|
    res.status_code = 301
    res.headers = { "Location" => "/new-path" }
    res.body = "Moved"
    res
  end

  # Error response
  get "/error" do |req, res|
    res.status_code = 500
    res.headers = { "Content-Type" => "text/plain" }
    res.body = "Internal Server Error"
    res
  end
end

$APP = App.new