Popularity
9.6
Declining
Activity
0.0
Declining
230
12
13

Programming language: Crystal
License: MIT License
Tags: HTTP    
Latest version: v0.2.7

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?

Add another 'HTTP' Shard

README

Build Status GitHub tag


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:

Installation

Add this to your application's shard.yml:

dependencies:
  router:
    github: tbrand/router.cr

Usage

Basic usage

require "router"

Include 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 get or 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

See sample and [tips](sample) for details.

Path parameters

params is a Hash(String, String) that is used when you define a path parameters such as /user/:id (: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

See sample and [tips](sample) for details.

Contributing

  1. Fork it ( https://github.com/tbrand/router.cr/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

  • tbrand Taichiro Suzuki - creator, maintainer