WebApplicationKit (Router, Middleware etc...) for Prorsum
- Routing
- Middleware
- ServeStaticMiddleware
mkdir MyWebKitApp
cd MyWebKitApp
swift package init
import PackageDescription
let package = Package(
name: "MyWebKitApp",
dependencies: [
.Package(url: "https://github.com/noppoMan/WebAppKit.git", majorVersion: 0, minor: 1)
]
)
touch Sources/main.swift
And then , copy and paste following boilerplate to your main.swift
main.swift boilerplate
import Prorsum
import WebAppKit
import Foundation
let app = Ace()
var router = Router()
let root = #file.characters
.split(separator: "/", omittingEmptySubsequences: false)
.dropLast(1)
.map { String($0) }
.joined(separator: "/")
app.use(ServeStaticMiddleware(root: root + "/../public"))
router.use(.get, "/") { request, response in
var response = response
response.set(body: "Welcome WebAppKit!")
return response
}
app.use(router)
app.catch { error in
switch error {
case ServeStaticMiddlewareError.resourceNotFound(let path):
return Response(status: .notFound, body: .buffer("\(path) is not found".data))
case RouterError.routeNotFound(let path):
return Response(status: .notFound, body: .buffer("\(path) is not found".data))
default:
print(error)
return Response(status: .internalServerError, body: .buffer("Internal Server Error".data))
}
}
let server = try! HTTPServer(app.handler)
try! server.bind(host: "0.0.0.0", port: 3000)
print("Server listening at 0.0.0.0:3000")
try! server.listen()
RunLoop.main.run()
swift package generate-xcodeproj --type=executable
open *.xcodeproj
- Select Your Application name from Schema(may be MyWebKitApp)
- Enter
cmd-r
to start up web server
swift build
.build/debug/YourApplicationNamme
WebAppKit is released under the MIT license. See LICENSE for details.