An opinionated framework for scalable web.
Onyx::HTTP is an opinionated HTTP framework for Crystal language. It features DSL and modules to build modern, scalabale web applications with first-class support for websockets.
Add these lines to your application's
dependencies: onyx: github: onyxframework/onyx version: ~> 0.4.0 onyx-http: github: onyxframework/http version: ~> 0.8.0
Note that until Crystal is officially released, this shard would be in beta state (
0.*.*), with every minor release considered breaking. For example,
0.2.0is breaking and
The simplest hello world:
require "onyx/http" Onyx::HTTP.get "/" do |env| env.response << "Hello, world!" end Onyx::HTTP.listen
struct GetUser include Onyx::HTTP::Endpoint params do path do type id : Int32 end end errors do type UserNotFound(404) end def call user = Onyx::SQL.query(User.where(id: params.path.id)).first? # This code is part of onyx/sql raise UserNotFound.new unless user return UserView.new(user) end end Onyx::HTTP.get "/users/:id", GetUser
struct UserView include Onyx::HTTP::View def initialize(@user : User) end json id: @user.id, name: @user.name end
struct Echo include Onyx::HTTP::Channel def on_message(message) socket.send(message) end end Onyx::HTTP.ws "/", Echo
The documentation is available online at docs.onyxframework.org/http.
There are multiple places to talk about Onyx:
This shard is maintained by me, Vlad Faust, a passionate developer with years of programming and product experience. I love creating Open-Source and I want to be able to work full-time on Open-Source projects.
I will do my best to answer your questions in the free communication channels above, but if you want prioritized support, then please consider becoming my patron. Your issues will be labeled with your patronage status, and if you have a sponsor tier, then you and your team be able to communicate with me privately in Twist. There are other perks to consider, so please, don't hesistate to check my Patreon page:
You could also help me a lot if you leave a star to this GitHub repository and spread the word about Crystal and Onyx! 📣
This software is licensed under MIT License.