route.cr alternatives and similar shards
Based on the "HTTP" category.
Alternatively, view router.cr alternatives based on common mentions on social networks and blogs.
Do you think we are missing an alternative of route.cr or a related project?
The default web server of the Crystal is quite good :smile: but it weak at routing :cry:.
Kemal or other web frameworks written in Crystal are awesome :smile:, but it's too fat for some purpose :cry:.
router.cr is a minimum but High Performance middleware for Crystal web server.
See the amazing performance of router.cr here.:rocket:
Add this to your application's
dependencies: router: github: tbrand/router.cr
Router to utilize router.cr.
class WebServer include Router end
Define a method to draw all routes for your web server.
class WebServer include Router def draw_routes # Drawing routes HERE! end end
In that method, call HTTP method name (downcase) like
post with PATH and BLOCK where
- PATH : String
- BLOCK : block of HTTP::Server::Context, Hash(String, String) -> HTTP::Server::Context ```crystal class WebServer include Router
def draw_routes get "/" do |context, params| context.response.print "Hello router.cr!" context end end end
Here we've defined a GET route at root path (/) that just print out "Hello router.cr" when we get access. To activate (run) the route, just define run methods for your server with route_handler ```crystal class WebServer include Router def draw_routes get "/" do |context, params| context.response.print "Hello router.cr!" context end end def run server = HTTP::Server.new(route_handler) server.bind_tcp 8080 server.listen end end
Here route_handler is getter defined in Router. So you can call
route_handler at anywhere in WebServer instance.
Finally, run your server.
web_server = WebServer.new web_server.draw_routes web_server.run
params is a Hash(String, String) that is used when you define a path parameters such as
:id is a parameters). Here is an example.
class WebServer include Router def draw_routes get "/user/:id" do |context, params| context.response.print params["id"] # get :id in url from params context end end end
- Fork it ( https://github.com/tbrand/router.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
- tbrand Taichiro Suzuki - creator, maintainer