route.cr
The default web server of the Crystal is quite good but it weak at routing. Kemal is an awesome defacto standard web framework for Crystal, but it's too fat for some purpose.
route.cr is a minimum but powerful path router for Crystal web server. See the amazing performance of route.cr here
Installation
Add this to your application's shard.yml
:
dependencies:
route:
github: tbrand/route.cr
Usage
require "route"
Include Route
to utilize this.
class WebServer
include Route
end
To define API, call API.new with context and params(optional) where context is HTTP::Server::Context and params is Hash(String, String). All APIs have to return the context.
@index = API.new do |context|
context.response.print "Hello route.cr"
context
end
Define your route at somewhere. In this example, define it in a contructor.
class WebServer
def initialize
get "/", @index
end
end
To activate the routes, use routeHandler
.
class WebServer
def run
server = HTTP::Server.new(3000, routeHandler)
server.listen
end
end
Finally, run your server.
web_server = WebServer.new
web_server.run
params
is a Hash(String, String) that is used when you define a path including parameters such as "/user/:id"
(:id
is a parameters). Here is an example.
class WebServer
@user = API.new do |context, params|
context.response.print params["id"] # get :id in url from params
context
end
def initialize
get "/user/:id", @user
end
end
See sample for details.
Contributing
- Fork it ( https://github.com/tbrand/route.cr/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Contributors
- tbrand Taichiro Suzuki - creator, maintainer