Easy-to-use, modular web framework for V.
module main
import nedpals.vex.router
import nedpals.vex.server
import nedpals.vex.ctx
fn print_req_info(mut req ctx.Req, mut res ctx.Resp) {
println('${req.method} ${req.path}')
}
fn do_stuff(mut req ctx.Req, mut res ctx.Resp) {
println('incoming request!')
}
fn main() {
mut app := router.new()
app.use(do_stuff, print_req_info)
app.route(.get, '/', fn (req &ctx.Req, mut res ctx.Resp) {
res.send_file('index.html', 200)
})
app.route(.get, '/public/*path', fn (req &ctx.Req, mut res ctx.Resp) {
res.send_file('public/' + req.params['path'], 200)
})
app.route(.get, '/path/:name', fn (req &ctx.Req, mut res ctx.Resp) {
println('path is ${req.params["name"]}')
}, fn (req &ctx.Req, mut res ctx.Resp) {
res.send('path: ' + req.params['name'], 200)
})
app.route(.get, '/complex/:name/*path', fn (req &ctx.Req, mut res ctx.Resp) {
res.send('username: ' + req.params['name'] + '\npath: ' + req.params['path'], 200)
})
server.serve(app, 6789)
}
Learn how to setup and use VEX by reading the Wiki.
- Support for
GET
,POST
,PUT
,PATCH
,DELETE
, andOPTION
HTTP methods. - HTTP Router (Wildcards are now supported)
- Route groups (non-reusable for now)
-
Static file server - Params and query parsing
- Middleware support
- Cookie parsing (basic support)
- Cookie manipulation / Session support
- Websocket Server
- Body parsing
-
application/x-www-form-urlencoded
support -
application/json
support -
multipart/form-data
support
-
- Fork it (https://github.com/nedpals/vex/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Examples can be found at the /examples
directory.
- Ned Palacios - creator and maintainer