class
Kemal::Router
- Kemal::Router
- Reference
- Object
Overview
Router provides modular routing capabilities for Kemal applications.
It allows grouping routes under a common prefix and applying filters
to specific route groups. Routers can be nested using #namespace.
Example
api = Kemal::Router.new
api.before do |env|
env.response.content_type = "application/json"
end
api.get "/users" do |env|
User.all.to_json
end
api.namespace "/admin" do
get "/dashboard" do |env|
{status: "ok"}.to_json
end
end
mount "/api/v1", api
Defined in:
kemal/router.crConstructors
Instance Method Summary
-
#after(path : String = "*", &block : HTTP::Server::Context -> _)
Defines an after filter for all HTTP methods.
-
#after_all(path : String = "*", &block : HTTP::Server::Context -> _)
Defines an after filter for ALL requests.
-
#after_delete(path : String = "*", &block : HTTP::Server::Context -> _)
Defines an after filter for DELETE requests.
-
#after_get(path : String = "*", &block : HTTP::Server::Context -> _)
Defines an after filter for GET requests.
-
#after_options(path : String = "*", &block : HTTP::Server::Context -> _)
Defines an after filter for OPTIONS requests.
-
#after_patch(path : String = "*", &block : HTTP::Server::Context -> _)
Defines an after filter for PATCH requests.
-
#after_post(path : String = "*", &block : HTTP::Server::Context -> _)
Defines an after filter for POST requests.
-
#after_put(path : String = "*", &block : HTTP::Server::Context -> _)
Defines an after filter for PUT requests.
-
#before(path : String = "*", &block : HTTP::Server::Context -> _)
Defines a before filter for all HTTP methods.
-
#before_all(path : String = "*", &block : HTTP::Server::Context -> _)
Defines a before filter for ALL requests.
-
#before_delete(path : String = "*", &block : HTTP::Server::Context -> _)
Defines a before filter for DELETE requests.
-
#before_get(path : String = "*", &block : HTTP::Server::Context -> _)
Defines a before filter for GET requests.
-
#before_options(path : String = "*", &block : HTTP::Server::Context -> _)
Defines a before filter for OPTIONS requests.
-
#before_patch(path : String = "*", &block : HTTP::Server::Context -> _)
Defines a before filter for PATCH requests.
-
#before_post(path : String = "*", &block : HTTP::Server::Context -> _)
Defines a before filter for POST requests.
-
#before_put(path : String = "*", &block : HTTP::Server::Context -> _)
Defines a before filter for PUT requests.
-
#delete(path : String, &block : HTTP::Server::Context -> _)
Defines a DELETE route.
-
#get(path : String, &block : HTTP::Server::Context -> _)
Defines a GET route.
-
#mount(path : String, router : Router)
Mounts another router at the given path prefix.
-
#mount(router : Router)
Mounts another router without additional prefix.
-
#namespace(path : String, &)
Creates a nested namespace/group with the given path prefix.
-
#options(path : String, &block : HTTP::Server::Context -> _)
Defines a OPTIONS route.
-
#patch(path : String, &block : HTTP::Server::Context -> _)
Defines a PATCH route.
-
#post(path : String, &block : HTTP::Server::Context -> _)
Defines a POST route.
- #prefix : String
-
#put(path : String, &block : HTTP::Server::Context -> _)
Defines a PUT route.
-
#register_routes(base_prefix : String = "")
Registers all routes, filters, and websockets with Kemal's handlers.
-
#ws(path : String, &block : HTTP::WebSocket, HTTP::Server::Context -> )
Defines a WebSocket route.
Constructor Detail
Instance Method Detail
Defines an after filter for all HTTP methods.
router.after do |env|
puts "Request completed"
end
Defines an after filter for ALL requests.
Defines an after filter for DELETE requests.
Defines an after filter for GET requests.
Defines an after filter for OPTIONS requests.
Defines an after filter for PATCH requests.
Defines an after filter for POST requests.
Defines an after filter for PUT requests.
Defines a before filter for all HTTP methods.
router.before do |env|
env.response.content_type = "application/json"
end
Defines a before filter for ALL requests.
Defines a before filter for DELETE requests.
Defines a before filter for GET requests.
Defines a before filter for OPTIONS requests.
Defines a before filter for PATCH requests.
Defines a before filter for POST requests.
Defines a before filter for PUT requests.
Defines a DELETE route.
router.delete "/path" do |env|
"response"
end
Defines a GET route.
router.get "/path" do |env|
"response"
end
Mounts another router at the given path prefix.
NOTE The path must start with a /.
users_router = Kemal::Router.new
users_router.get "/" { |env| "users" }
api = Kemal::Router.new
api.mount "/users", users_router
mount "/api", api
# Result: GET /api/users
Creates a nested namespace/group with the given path prefix.
NOTE The path must start with a /.
All routes defined inside the block will be prefixed with the given path.
router.namespace "/users" do
get "/" do |env|
User.all.to_json
end
get "/:id" do |env|
User.find(env.params.url["id"]).to_json
end
end
Defines a OPTIONS route.
router.options "/path" do |env|
"response"
end
Defines a PATCH route.
router.patch "/path" do |env|
"response"
end
Defines a POST route.
router.post "/path" do |env|
"response"
end
Defines a PUT route.
router.put "/path" do |env|
"response"
end
Registers all routes, filters, and websockets with Kemal's handlers.
This is called automatically when using #mount from DSL.
:nodoc:
Defines a WebSocket route.
router.ws "/chat" do |socket, env|
socket.on_message do |msg|
socket.send "Echo: #{msg}"
end
end