Swiftpack.co - Macro-swift/MacroExpress as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by Macro-swift.
Macro-swift/MacroExpress 1.0.2
An unopinionated SwiftNIO based web framework, Express.js/Connect like.
⭐️ 48
🕓 49 weeks ago
.package(url: "https://github.com/Macro-swift/MacroExpress.git", from: "1.0.2")

MacroExpress

A small, unopinionated "don't get into my way" / "I don't wanna wait" asynchronous web framework for Swift. With a strong focus on replicating the Node APIs in Swift. But in a typesafe, and fast way.

MacroExpress is a more capable variant of µExpress. The goal is still to keep a small core, but add some Noze.io modules and concepts.

MacroExpress adds the web framework components to Macro (kinda like Express.js adds to Node.js).

MacroLambda has the bits to directly deploy MacroExpress applications on AWS Lambda. MacroApp adds a SwiftUI-style declarative DSL to setup MacroExpress routes.

What does it look like?

The Macro Examples package contains a few examples which all can run straight from the source as swift-sh scripts.

#!/usr/bin/swift sh
import MacroExpress // @Macro-swift

let app = express()
app.use(logger("dev"))
app.use(bodyParser.urlencoded())
app.use(serveStatic(__dirname() + "/public"))

app.get("/hello") { req, res, next in
  res.send("Hello World!")
}
app.get { req, res, next in
  res.render("index")
}

app.listen(1337)

Environment Variables

  • macro.core.numthreads
  • macro.core.iothreads
  • macro.core.retain.debug
  • macro.concat.maxsize
  • macro.streams.debug.rc
  • macro.router.debug
  • macro.router.matcher.debug
  • macro.router.walker.debug

Links

Who

MacroExpress is brought to you by Helge Heß / ZeeZide. We like feedback, GitHub stars, cool contract work, presumably any form of praise you can think of.

There is a #microexpress channel on the Noze.io Slack. Feel free to join!

GitHub

link
Stars: 48
Last commit: 7 weeks ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Release Notes

NeXTless
49 weeks ago

This version releases support for "final" middleware that doesn't require a "next" handler. It could be ignored before using the _ Swift syntax, but now it isn't required at all.

Before (still works):

app.get { req, res, _ in res.send("Hi!") }

New:

app.get { req, res in res.send("Hi!") }

Two chars saved, nice! (and higher compat w/ Express, which due to JavaScript semantics doesn't require any parameter to be declared).

Important: Such "final" middleware must end the response that is passed in!

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics