Skip to content

octree/RoutingKit

Repository files navigation

RoutingKit

Usage

struct MessageBody: Body {
    typealias Response = String
    var message: String
}

router.register(MessageBody.self) { $0.message }
try router.request(MessageBody(message: "message"))

URL

public protocol DemoURLDecodableBody: URLDecodableBody {}

public extension DemoURLDecodableBody {
    static var scheme: String { "demo" }
    static var host: Host { .any }
}

struct DocBody: DemoURLDecodableBody {
    typealias Response = String
    static var uri: String { "/docs/:id" }
    static func decode(from url: URL, urlParameters: Parameters) throws -> DocBody {
        DocBody(id: urlParameters["id", as: String.self]!)
    }
    var id: String
}

router.register(DocBody.self) { $0.id }
try router.request(DocBody(id: "hello"))
try router.request(url: URL(string: "demo://host/docs/uuid")!)

Wildcard

struct DocBody: DemoURLDecodableBody {
  var uri: String { "/*/:id" }
}

Installation

Swift Package Manager

License

RoutingKit is available under the MIT license. See the LICENSE file for more info.

About

Routing library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages