These docs are for v0.12. Click to read the latest docs for v0.16.

Sessions allow data to be stored for an individual client using cookies.

app.post("session") { request in
    guard let name = request.data["name"].string else {
        throw Abort.badRequest
    }
    request.session?["name"] = name

    return "Session set"
}

app.get("session") { request in
    guard let name = request.session?["name"] else {
        return "No session data"
    }

    return name
}

The above code saves the name parameter posted to the POST /session route into the client's session.

When the client then visits GET /session and supplies the cookie it received, the name will be returned.

Note: Make sure SessionMiddleware() is enabled in your middleware.