Skip to content

Framework

RoutingKit

RoutingKit is a high-performance, trie-node router to route HTTP requests to the correct route handler. It allows for dynamic path parameters to make building web frameworks easy.

Parameters

path components

E.G. ":id", ":postId"

Installation

Manually add the following to your Package.swift file:

dependencies: [
    .package(url: "https://github.com/vapor/routing-kit.git", from: "5.0.0")
],
targets: [
    .target(
        name: "MyTarget",
        dependencies: [
            .product(name: "RoutingKit", package: "routing-kit"),
        ]
    ),
]

Usage

To use RoutingKit, first import the module:

import RoutingKit

Then, create a router builder instance:

let builder = TrieRouterBuilder(String.self)
// or
let builder = TrieRouterBuilder<Int>()

Next, register routes with associated handlers:

builder.register("handler1", at: ["users", ":id"])
builder.register("handler2", at: ["posts", ":postId", "comments"])

Finally, build the router and use it to route incoming paths:

let router = builder.build()
var params = Parameters()
if let handler = router.route(["users", "123"], parameters: &params) {
    print("Routed to handler: \(handler) with params: \(params)")
}

Note

To preserve both speed and safety, once you create a router using the build() method, it becomes immutable. Any further modifications require creating a new builder instance.

There’s different types of path components you can use when registering routes:

  • Constant path components: e.g. "users", "posts"

  • Wildcard path components: e.g. "*"

  • Partial parameter path components: e.g. ":{file-name}.{ext}"

All of these can be used simply by passing the appropriate strings to the register method.

Custom Router

You can also create your own custom router by conforming to the Router protocol. This allows you to define your own routing logic rather than using the built-in trie-based router.

Topics

Classes

Protocols

  • Router
    An object that can quickly look up previously registered routes.
  • RouterBuilder
    A protocol for building routers by registering routes with their associated outputs.

Structures

  • Parameters
    Holds dynamic path components that were discovered while routing.
  • TrieRouterBuilder
    TrieRouterBuilder provides an efficient way to build routing tables by accumulating route registrations and then constructing an immutable, thread-safe TrieRouter for fast lookups.

Enumerations

  • PathComponent
    A single path component of a Route. An array of these components describes a route’s path, including which parts are constant and which parts are dynamic.

Extended Modules