NAME
Slick::Context
SYNOPSIS
Slick::Context is an Moo wrapper around the HTTP lifecycle. It encompases a Plack::Request and a bunch of other helpers to make it easy to handle HTTP in Slick.
API
content
$s->post('/foo', sub {
my ($app, $context) = @_;
my $data = $context->content;
});
Decodes the body of the Plack::Request via the following:
JSON
=> JSON::TinyYAML
=> YAML::TinyURL ENCODED
=> URL::EncodeOTHER
=> returns as text/bytes
body
$s->get('/foo', sub {
my ($app, $context) = @_;
$context->body('Foo!');
});
Sets the body of the response to whatever is provided. Note: You'll probably want to use "html", "json", "text" or "yaml" instead of this.
html
$s->get('/foo', sub {
my ($app, $context) = @_;
$context->body('<h1>Foo!</h1>');
});
Sets the body of the response and sets the Content-Type
header to text/html
. Returns the context.
Note, you should have use utf8;
enabled.
json
$s->get('/foo', sub {
my ($app, $context) = @_;
$context->json({ hello => 'world' });
});
Sets the body of the response and sets the Content-Type
header to application/json
. Returns the context.
Note, you should have use utf8;
enabled.
yaml
$s->get('/foo', sub {
my ($app, $context) = @_;
$context->yaml([ { hello => 'world' });
});
Sets the body of the response and sets the Content-Type
header to application/yaml
. Returns the context.
Note, you should have use utf8;
enabled.
text
$s->get('/foo', sub {
my ($app, $context) = @_;
$context->text("Hello World!");
});
Sets the body of the response and sets the Content-Type
header to text/plain
. Returns the context.
Note, you should have use utf8;
enabled.
to_psgi
Converts the Slick::Context to Plack response. In the format:
[$status, [ @headers ], [ @body ]]
status
$s->get('/foo', sub {
my ($app, $context) = @_;
$context->status(201);
});
Sets the status code of the response, returns the context.
redirect
$s->get('/foo', sub {
my ($app, $context) = @_;
$context->redirect("/foo");
});
Sets the response to redirect to a given location, optionally provide another status code as a second argument if you don't want 303
. Returns the context object.
header
$s->get('/foo', sub {
my ($app, $context) = @_;
$context->header(Foo => 'bar');
});
Sets a header on the underlying response HashRef
. Returns the context.
response
Returns the response HashRef
that will be used to create the PSGI response via "to_psgi".
query
$s->get('/foo', sub {
my ($app, $context) = @_;
$context->query('bar');
});
Returns the value of a specified query parameter key, returns undef if there is no such key.
See "queries" for the raw query parameter HashRef
.
queries
$s->get('/foo', sub {
my ($app, $context) = @_;
$context->queries->{'bar'};
});
Returns the query parameters as a HashRef
.
param
$s->get('/foo', sub {
my ($app, $context) = @_;
$context->param('bar');
});
Returns the value of a specified path parameter key, returns undef if there is no such key.
See "params" for the raw path parameter HashRef
.
params
$s->get('/foo/{bar}', sub {
my ($app, $context) = @_;
$context->params->{'bar'};
});
Returns the path parameters as a HashRef
.
stash
Returns a transient HashRef
that is persistent per request, this is for inter-layer communication.
id
Returns an arbitrary tracing ID in the form of a 4-digit number.
See also
4 POD Errors
The following errors were encountered while parsing the POD:
- Around line 237:
Unknown directive: =over2
- Around line 239:
'=item' outside of any '=over'
- Around line 395:
Unknown directive: =over2
- Around line 397:
'=item' outside of any '=over'