[dancer-users] Dancer2::Manual: confused as to use of 'appname' keyword to distribute code across packages

Amelia Ireland aireland at lbl.gov
Thu Jul 14 23:11:09 BST 2016


Have you checked http://localhost:5000/api/api/userdata/dancer_operator?

On 14 July 2016 at 14:37, James E Keenan <jkeen at verizon.net> wrote:

> On 07/12/2016 10:44 AM, Warren Young wrote:
>
>> On Jul 10, 2016, at 11:20 AM, James E Keenan <jkeen at verizon.net> wrote:
>>
>>>
>>> All the endpoints defined in lib/mywebapp.pm continue to function as
>>> expected.  But the endpoint, /api/userdata/:user, defined in lib/mywebapp/
>>> api.pm, no longer works.
>>>
>>
>> That’s because your “mount” for the api.pm routes prepends ‘/api’ to
>> them.  When you use the module standalone as you’re attempting to now, that
>> bit is stripped off.  You’ll find that you now have /userdata/$stuff now.
>>
>> Easy fix: wrap the route definitions in api.pm in a prefix block:
>>
>>      prefix '/api' => sub {
>>          any ['get', 'post'] => '/userdata/:user' => sub {
>>              # etc
>>          };
>>      };
>>
>>
> Thank you for your reply.  However, when I wrap the endpoint in
> mywebapp::api with 'prefix' per your suggestion, I am still getting 404s on
> both 'http://localhost:5000/api/userdata/dancer_operator' and '
> http://localhost:5000/userdata/dancer_operator'.
>
> Here is the diff of what I am trying:
>
> #####
> diff --git a/bin/app.psgi b/bin/app.psgi
> index 46d8845..e9ac3da 100755
> --- a/bin/app.psgi
> +++ b/bin/app.psgi
> @@ -6,11 +6,12 @@ use FindBin;
>  use lib "$FindBin::Bin/../lib";
>
>  use mywebapp;
> -use mywebapp::api;
> -use Plack::Builder;
> -
> -builder {
> -    mount '/'       => mywebapp->to_app;
> -    mount '/api'    => mywebapp::api->to_app;
> -};
> +#use mywebapp::api;
> +#use Plack::Builder;
> +#
> +#builder {
> +#    mount '/'       => mywebapp->to_app;
> +#    mount '/api'    => mywebapp::api->to_app;
> +#};
> +mywebapp->to_app;
>
> diff --git a/lib/mywebapp.pm b/lib/mywebapp.pm
> index 997bdc7..7c940da 100644
> --- a/lib/mywebapp.pm
> +++ b/lib/mywebapp.pm
> @@ -1,6 +1,6 @@
>  package mywebapp;
>  use v5.10.1;
> -use Dancer2;
> +use Dancer2 appname => mywebapp;
>  use Dancer2::Plugin::Database;
>  use Crypt::SaltedHash;
>  use Data::Dump;
> diff --git a/lib/mywebapp/api.pm b/lib/mywebapp/api.pm
> index 3af1adf..88b47f7 100644
> --- a/lib/mywebapp/api.pm
> +++ b/lib/mywebapp/api.pm
> @@ -1,6 +1,6 @@
>  package mywebapp::api;
>  use v5.10.1;
> -use Dancer2;
> +use Dancer2 appname => mywebapp;
>  use Dancer2::Plugin::Database;
>  use Crypt::SaltedHash;
>  use Data::Dump;
> @@ -13,6 +13,7 @@ set session => 'Simple';
>  set views => path( app->location, "templates" );
>  set serializer => 'JSON';
>
> +prefix '/api' => sub {
>  any ['get', 'post'] => '/userdata/:user' => sub {
>
>      my $user_value = route_parameters->get('user');
> @@ -34,6 +35,7 @@ any ['get', 'post'] => '/userdata/:user' => sub {
>          }
>      }
>  };
> +};
>
>  start;
> ######
>
> So I'm still finding that 'appname' is not DWIMming.
>
> Thank you very much.
> Jim Keenan
> _______________________________________________
> dancer-users mailing list
> dancer-users at dancer.pm
> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.preshweb.co.uk/pipermail/dancer-users/attachments/20160714/5d9e51ba/attachment.html>


More information about the dancer-users mailing list