The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Whelk::Role::Resource - Role for Whelk API resources

SYNOPSIS

        package My::Custom::Resource;

        use Kelp::Base 'My::Custom::Controller';
        use Role::Tiny::With;

        with qw(WhelK::Role::Resource);

        # required by the role
        sub api
        {
                my ($self) = @_;

                # implement the api
                ...;
        }

DESCRIPTION

This is a role which implements Whelk resources. It must be applied to a Kelp controller which is meant to be used as a resource for Whelk. Whelk::Resource is such controller, and is also a base controller for Whelk - there is no need to manually consume the role if you are extending it. If you write your own Kelp application which uses Whelk, you most certainly want to only apply it in a couple of your controllers and not the main controller.

This role requires you to implement api method - it will not apply if this prerequisite is not met. It also requires context attribute to be present, which is also a requirement made by Kelp.

Whelk will reject any resources defined in its resources configuration field which do not consume this role.

METHODS

This role implements just a couple of helpful methods which you may use in api method and your route handler methods.

request_body

        my $body = $self->request_body;

A helper which returns the request body saved by the wrapper in stash key request.

add_endpoint

Standard Whelk method to add endpoints, discussed at length in "Adding endpoints" in Whelk::Manual.