MacroApp

0.6.0

A SwiftUI-like, declarative way to setup MacroExpress Endpoints
Macro-swift/MacroApp

What's New

TheLatest

2023-01-02T16:24:53Z

Updated to use the latest SwiftNIO. This implies that Swift 5.5.2+ is now required.

MacroApp

MacroApp layers on top of MacroExpress to provide a SwiftUI like, declarative setup of endpoints.

It is a little more opinionated than MacroExpress.

MacroExpress is 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.

MacroApp is just syntactic sugar (using Swift function builders) on top of MacroExpress. The configuration is evaluated into a regular MacroExpress based app (with routes and middleware).

Example

MacroApp:

@main
struct HelloWorld: App {
  
  var body: some Endpoints {
    Use(logger("dev"), bodyParser.urlencoded())
          
    Route("/admin") {
      Get("/view") { req, res, _ in res.render("admin-index.html") }
      Render("help", template: "help")
    }
      
    Get { req, res, next in
      res.render("index.html")
    }
  }
}

Instead of this traditional route setup (as in MacroExpress):

let app = express()

app.use(logger("dev"), bodyParser.urlencoded())

app.route("/admin")
   .get("/view") { req, res, _ in res.render("admin-index.html") }

app.get("/") { req, res, _ in res.render("index.html") }

app.listen(1337) {
    console.log("Server listening on http://localhost: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

Links

Who

MacroExpress is brought to you by the Always Right Institute and 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!

Description

  • Swift Tools 5.5.0
View More Packages from this Author

Dependencies

Last updated: Thu May 02 2024 10:46:33 GMT-0900 (Hawaii-Aleutian Daylight Time)