# Bonsai.jl: A HTTP framework

**URL:** <https://discourse.julialang.org/t/bonsai-jl-a-http-framework/91355>\
**Category:** Package Announcements\
**Tags:** package, announcement, web, http\
**Created:** [December 7, 2022, 10:33am UTC](https://discourse.julialang.org/t/bonsai-jl-a-http-framework/91355 "2022-12-07T10:33:29Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![onetonfoot](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/onetonfoot/32/2697_2.png) [@onetonfoot](https://discourse.julialang.org/u/onetonfoot)\
**Post date:** [December 7, 2022, 10:33am UTC](https://discourse.julialang.org/t/bonsai-jl-a-http-framework/91355/1 "2022-12-07T10:33:30Z")

</div>

Hi I’m developing a new HTTP framework called [Bonsai.jl](https://onetonfoot.github.io/Bonsai.jl/). It’s still WIP but should be useable enough for a package annoncement. A short snippet of what the code looks like.

```julia
using Bonsai

const app = App()

function index(stream::HTTP.Stream)
    query = Bonsai.read( stream, Query(name=Union{String, Nothing}))
    name = isnothing(query.name) ? "John Doe" : query.name  
    Bonsai.write(stream, Body("Hi, $name"))
end

function register_handlers!(app)
    app.get["/"] = index
end

function run()
    register_handlers!(app)
    start(app, port=9091)
end

```

It basically provides abstraction over a `HTTP.Stream` which allows you to declaratively read and write data by specifying types. Feedback, issues and pulls would be appericate, thanks!
