Prologue
What's past is prologue.
Purpose
Prologue
is a powerful and flexible web framework written in Nim.
It is ideal for building elegant and high performance web services.
Reduce magic. Reduce surprise.
Documentation
Documentation | Index Page | |
Core API | Index Page | Search Page |
Full API | Index Page | Search Page |
Installation
First you should install Nim language which is an elegant and high performance language. Follow the instructions and set environment variables correctly.
Then you can use nimble
command to install prologue.
Prologue
also provides some extensions. You can use logue extension
to install all of them. If you just want to install one of them, you can use logue extension module
for example logue extension redis
.
Usage
Hello World
# app.nim
import prologue
proc hello*(ctx: Context) {.async.} =
resp "<h1>Hello, Prologue!</h1>"
let app = newApp()
app.addRoute("/", hello)
app.run()
Run app.nim ( nim c -r app.nim
). Now the server is running at localhost:8080
.
Another example
# app.nim
import prologue
import prologue/middlewares
# Async Function
proc home*(ctx: Context) {.async.} =
resp "<h1>Home</h1>"
proc helloName*(ctx: Context) {.async.} =
resp "<h1>Hello, " & ctx.getPathParams("name", "Prologue") & "</h1>"
proc doRedirect*(ctx: Context) {.async.} =
resp redirect("/hello")
proc login*(ctx: Context) {.async.} =
resp loginPage()
proc do_login*(ctx: Context) {.async.} =
resp redirect("/hello/Nim")
let settings = newSettings(appName = "Prologue")
var app = newApp(settings = settings)
app.use(debugRequestMiddleware())
app.addRoute("/", home, @[HttpGet, HttpPost])
app.addRoute("/home", home, HttpGet)
app.addRoute("/redirect", doRedirect, HttpGet)
app.addRoute("/login", login, HttpGet)
app.addRoute("/login", do_login, HttpPost, middlewares = @[debugRequestMiddleware()])
app.addRoute("/hello/{name}", helloName, HttpGet)
app.run()
Run app.nim (nim c -r app.nim
). Now the server is running at localhost:8080
.
More examples
Extensions
If you need more extensions, you can refer to awesome prologue and awesome nim.
Donations
Thanks for supporting me.
https://github.com/sponsors/planety