All Projects → nedpals → Vex

nedpals / Vex

Licence: mit
Easy-to-use, modular web framework built for V

Projects that are alternatives of or similar to Vex

aqua
A minimal and fast 🏃 web framework for Deno
Stars: ✭ 219 (+62.22%)
Mutual labels:  web-framework, http-server
tinyhttp
🦕 Deno port of tinyhttp, 0-legacy, tiny & fast web framework
Stars: ✭ 84 (-37.78%)
Mutual labels:  web-framework, http-server
stirfry
StirFry is a self contained and lightweight web framework for nodejs
Stars: ✭ 24 (-82.22%)
Mutual labels:  web-framework, http-server
Catacumba
Asynchronous web toolkit for clojure built on top of Ratpack / Netty
Stars: ✭ 192 (+42.22%)
Mutual labels:  web-framework, http-server
Farwest
Framework for building RESTful HATEOAS-driven applications.
Stars: ✭ 18 (-86.67%)
Mutual labels:  web-framework, http-server
Polyel-Framework
⚡️ Voltis Core: A PHP framework based on Swoole from the ground up
Stars: ✭ 22 (-83.7%)
Mutual labels:  web-framework, http-server
shivneri
Component based MVC web framework based on fort architecture targeting good code structures, modularity & performance.
Stars: ✭ 21 (-84.44%)
Mutual labels:  web-framework, http-server
Firefly
Firefly is an asynchronous web framework for rapid development of high-performance web application.
Stars: ✭ 277 (+105.19%)
Mutual labels:  web-framework, http-server
Cowboy
Small, fast, modern HTTP server for Erlang/OTP.
Stars: ✭ 6,533 (+4739.26%)
Mutual labels:  web-framework, http-server
Takes
True Object-Oriented Java Web Framework
Stars: ✭ 670 (+396.3%)
Mutual labels:  web-framework, http-server
Vaxic
Node HTTP server framework
Stars: ✭ 45 (-66.67%)
Mutual labels:  web-framework, http-server
Jiny
Lightweight, modern, simple JVM web framework for rapid development in the API era
Stars: ✭ 40 (-70.37%)
Mutual labels:  web-framework, http-server
Gaea
Gaea is a Gin-based web framework, reference gin https://github.com/gin-gonic/gin
Stars: ✭ 105 (-22.22%)
Mutual labels:  web-framework, http-server
Java Express
🧪 HTTP Framework based on expressjs, no dependencies, simple usage. Can be used to quickly spin up an API or serve local files.
Stars: ✭ 125 (-7.41%)
Mutual labels:  http-server
Fs2 Http
Http Server and client using fs2
Stars: ✭ 132 (-2.22%)
Mutual labels:  http-server
Watsonwebserver
Watson is the fastest, easiest way to build scalable RESTful web servers and services in C#.
Stars: ✭ 125 (-7.41%)
Mutual labels:  http-server
Qtnetworkng
QtNetwork Next Generation. A coroutine based network framework for Qt/C++, with more simpler API than boost::asio.
Stars: ✭ 125 (-7.41%)
Mutual labels:  http-server
Http4k
The Functional toolkit for Kotlin HTTP applications. http4k provides a simple and uniform way to serve, consume, and test HTTP services.
Stars: ✭ 1,883 (+1294.81%)
Mutual labels:  http-server
Clastic
🏔️ A functional web framework that streamlines explicit development practices while eliminating global state.
Stars: ✭ 131 (-2.96%)
Mutual labels:  web-framework
Giraffe
Giraffe is an F# micro web framework for building rich web applications. It has been heavily inspired and is similar to Suave, but has been specifically designed with ASP.NET Core in mind and can be plugged into the ASP.NET Core pipeline via middleware. Giraffe applications are composed of so called HttpHandler functions which can be thought of a mixture of Suave's WebParts and ASP.NET Core's middleware.
Stars: ✭ 1,703 (+1161.48%)
Mutual labels:  web-framework

Logo

Easy-to-use, modular web framework for V.

CI

Example written on VEX

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)
}

Installation & Getting Started

Learn how to setup and use VEX by reading the Wiki.

Roadmap

  • [X] Support for GET, POST, PUT, PATCH, DELETE, and OPTION HTTP methods.
  • [x] HTTP Router (Wildcards are now supported)
  • [x] Route groups (non-reusable for now)
  • [x] Static file server
  • [x] Params and query parsing
  • [x] Middleware support
  • [x] Cookie parsing (basic support)
  • [ ] Cookie manipulation / Session support
  • [ ] Websocket Server
  • [x] Body parsing
    • [x] application/x-www-form-urlencoded support
    • [x] application/json support
    • [x] multipart/form-data support

Contributing

  1. Fork it (https://github.com/nedpals/vex/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

Examples

Examples can be found at the /examples directory.

License

MIT

Contributors

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].