router
Version, currently 0.1.923 versions
- 0.2.8latestApr 11, 2021
- 0.2.7not indexedJun 5, 2021
- 0.2.6not indexedJun 5, 2021
- 0.2.5not indexedJun 5, 2021
- 0.2.4not indexedJun 5, 2021
- 0.2.3not indexedJun 5, 2021
- 0.2.2not indexedJun 5, 2021
- 0.2.1not indexedJun 5, 2021
- 0.2.0not indexedJun 5, 2021
- 0.1.13not indexedJun 5, 2021
- 0.1.12not indexedJun 5, 2021
- 0.1.11not indexedJun 5, 2021
- 0.1.10not indexedJun 5, 2021
- 0.1.9not indexedJun 5, 2021
- 0.1.8not indexedJun 5, 2021
- 0.1.7not indexedJun 5, 2021
- 0.1.6not indexedJun 5, 2021
- 0.1.5not indexedJun 5, 2021
- 0.1.4not indexedJun 5, 2021
- 0.1.3not indexedJun 5, 2021
- 0.1.2not indexedJun 5, 2021
- 0.1.1not indexedJun 5, 2021
- 0.1.0not indexedJun 5, 2021
github.com/tbrand/router.cr
Minimum High Performance Middleware for Crystal Web Server.
271 stars
1 dependent
License: MIT
Nothing has been indexed for 0.1.9 yet. The tag is recorded, its shard.yml has not been read, so the manifest and dependency list below are empty because they are unknown rather than because they are absent.
Installation
# Add this to your shard.yml
dependencies:
router:
github: tbrand/router.cr
version: ~> 0.1.9Then run:
shards installshard.yml
No shard.yml has been indexed for 0.1.9. You can read it on the repository.
Dependencies
Unknown: the shard.yml for this version has not been read yet.
README
This README is the one indexed from the repository at its latest ref, not from the tag for this version.
<img src="https://cloud.githubusercontent.com/assets/3483230/25668495/c3c28574-3061-11e7-9dbd-969d95eb4bf8.png" width="200" />
[](https://travis-ci.org/tbrand/router.cr)
[](https://github.com/tbrand/router.cr/tags)
---
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](https://github.com/tbrand/which_is_the_fastest).:rocket:
## Installation
Add this to your application's `shard.yml`:
```yaml
dependencies:
router:
github: tbrand/router.cr
```
## Usage
### Basic usage
```crystal
require "router"
```
Include `Router` to utilize **router.cr**.
```crystal
class WebServer
include Router
end
```
Define a method to draw all routes for your web server.
```crystal
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.
```crystal
web_server = WebServer.new
web_server.draw_routes
web_server.run
```
See [sample](https://github.com/tbrand/router.cr/blob/master/sample/sample.cr) and [tips]([sample](https://github.com/tbrand/router.cr/blob/master/sample/tips.cr)) 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.
```crystal
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](https://github.com/tbrand/router.cr/blob/master/sample/sample.cr) and [tips]([sample](https://github.com/tbrand/router.cr/blob/master/sample/tips.cr)) 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](https://github.com/tbrand) Taichiro Suzuki - creator, maintainer
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
0.1.9- Tagged
- Jun 5, 2021
- Commit
750106abe370- Indexed
- not yet
Dependents
Repository
github.com/tbrand/router.cr
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 12, 2026
- Synced
- Aug 12, 2026
- Versions
- 23