Intro
The following code snippet gets at the essence of the framework
using Bonsai, HTTP
const app = App()
function index(stream::HTTP.Stream)
= Bonsai.read( stream, Query(name=Union{String, Nothing}))
query = isnothing(query.name) ? "John Doe" : query.name
name write(stream, Body("Hi, $name"))
Bonsai.end
function register_handlers!(app)
"/"] = index
app.get[end
function run()
register_handlers!(app)
start(app, port=9091)
end
run()
The package provides abstraction so we use the HTTP.Stream
IO type to declaratively read and write data by specifying our inputs and outputs as types. Calls to Bonsai.read
will extract data from the HTTP Request and likewise those to Bonsai.write
will construct an HTTP response.
Features
Some features include:
- Live Reloading (using Revise)
- WebSockets
- Tight integration with StructTypes
- Flexible Middleware
- Automatic OpenAPI Generetation using JET
For a more detailed breakdown read the handlers section or if you prefer to dive in check out the examples.
About
Bonsai aims to be minimalistic and not impose a specific structure on the developer, the API is inspired by FastAPI, Fibre and Express.