Skip to content

Multiplatform Ktor schema declarationopensavvy.spine.apiStaticResource

StaticResource

abstract class StaticResource<Parent : Resource>(slug: String, val parent: Parent) : Resource

A resource with a hard-coded segment: v1/users, v1/posts/favorites.

To declare a resource of this type, create a singleton:

// URL: v1
object Api : RootResource("v1") {

    // URL: v1/users
    object Users : StaticResource<Api>("users", parent = Api) {

        // Endpoint: GET v1/users
        val list by get()
            .response<List<UserDto>>()

    }

    // URL: v1/posts
    object Posts : StaticResource<Api>("posts", parent = Api) {

        // URL: v1/posts/favorites
        object Favorites : StaticResource<Posts>("favorites", parent = Posts) {

            // Endpoint: GET v1/posts/favorites
            val all by get()
                .response<List<PostDto>>()

        }
    }
}

Note that static resources can be children of a DynamicResource. For example, v1/users/{user}/key is a static resource "key" that is a child of the dynamic resource "{user}", itself a child of the static resource "users", itself a child of the root resource "v1".

Parameters

Parent

The type of the direct parent of this resource. Because of restrictions of the Kotlin language, it must be specified explicitly even if it already appears in the line because it is passed to parent.

See also

Constructors

StaticResource

constructor(slug: String, parent: Parent)

Creates a new StaticResource. The passed slug should be a single word, which represents the hierarchy between this endpoint and its parent.

Properties

children

Returns resources that are direct children of the current resource.

directEndpoints

Returns all endpoints that are declared on this resource.

endpoints

Returns all endpoints that are declared on this resource or any of its children.

fullSlug

The complete URL of this resource, starting from the RootResource, to this resource.

hierarchy

Returns the hierarchy of this resource: following the parent chain.

parent

override val parent: Parent

The parent resource of this resource.

slug

val slug: String

The URL segment relating to this specific resource.