artist,
First you need to understand that $self->param() ne $self->query()->param(). The former is more like a internal scratch pad available to all run-modes while the latter is the CGI query parameter method.
sub setup {
my $self = shift;
$self->param('id' => 123);
}