My problem is that the /api/action.:format route doesn't seem to match anything.

Turn on debugging :) https://metacpan.org/pod/Path::Router#DEBUGGING

#!/usr/bin/perl -- BEGIN{$ENV{PATH_ROUTER_DEBUG}=999;} use Path::Router; use Path::Router::Shell; my $router = Path::Router->new; $router->add_route( '/api/action.:format' ); $router->add_route( '/ro/sham/:bo' ); Path::Router::Shell->new(router => $router )->shell; __END__ /ro/sham/json Attempting to match /api/action.:format against ro/sham/json regexp +is (?:api(?:\/action.:format)) ... LENGTH DID NOT MATCH Attempting to match /ro/sham/:bo against ro/sham/json regexp is (?:r +o(?:\/sham(?:\/([^\/]+)))) match success $VAR1 = bless( { 'mapping' => { 'bo' => 'json' }, 'route' => bless( { 'validations' => {}, 'components' => [ 'ro', 'sham', ':bo' ], 'defaults' => {}, 'path' => '/ro/sham/:bo' }, 'Path::Router::Route' ), 'path' => 'ro/sham/json' }, 'Path::Router::Route::Match' );

So something something "components" something

What could be a solution to my problem?

MANIFEST :) http://search.cpan.org/dist/OX/MANIFEST, http://search.cpan.org/dist/Path-Router/MANIFEST, http://search.cpan.org/dist/Path-Dispatcher/MANIFEST,
https://metacpan.org/source/DOY/OX-0.13/t/apps/Counter-Over-Engineered-Sugar/lib/Counter/Over/Engineered/Sugar.pm
https://metacpan.org/source/DOY/Path-Router-0.12/t/006_match_w_targets.t
https://metacpan.org/source/DOY/Path-Router-0.12/t/003_messy_paths.t

Hmm, so the dot is the dot dot dot not slash slash slash ... what?

update: I don't see that it can be done (seems to assume / decides what can be :variable ) ... I would consult module author for this bug-or-wishlist item , or try some other router

This is why I think that

#!/usr/bin/perl -- BEGIN{$ENV{PATH_ROUTER_DEBUG}=999;} use Path::Router; use Path::Router::Shell; use Data::Dump qw/ dd pp /; my $router = Path::Router->new; $router->add_route( '/api/action.:format' ); $router->add_route( '/ro/sham/:bo' ); my $route = '/ro/sham/json'; dd( $route => scalar( $router->match( $route ) ) ); dd( $router ); __END__ Attempting to match /api/action.:format against ro/sham/json regexp +is (?:api(?:\/action.:format)) Attempting to match /ro/sham/:bo against ro/sham/json regexp is (?:r +o(?:\/sham(?:\/([^\/]+)))) match success ( "/ro/sham/json", bless({ mapping => { bo => "json" }, path => "ro/sham/json", route => bless({ components => ["ro", "sham", ":bo"], defaults => {}, path => "/ro/sham/:bo", validations => {}, }, "Path::Router::Route"), }, "Path::Router::Route::Match"), ) bless({ inline => 1, match_code => sub { ... }, route_class => "Path::Router::Route", routes => [ bless({ components => ["api", "action.:format"], defaults => {}, path => "/api/action.:format", validations => {}, }, "Path::Router::Route"), bless({ components => ["ro", "sham", ":bo"], defaults => {}, path => "/ro/sham/:bo", validations => {}, }, "Path::Router::Route"), ], }, "Path::Router")

can't fake it, so bug

#!/usr/bin/perl -- BEGIN{$ENV{PATH_ROUTER_DEBUG}=999;} use Path::Router; use Data::Dump qw/ dd pp /; my $router = Path::Router->new; push @{ $router->{routes} }, bless({ components => ["a", "b.", ":c"], defaults => {}, path => "/a/b.:c", validations => { c}, }, "Path::Router::Route"); my $route = 'a/b.json'; dd( $route => scalar( $router->match( $route ) ) ); __END__ Attempting to match /a/b.:c against a/b.json regexp is (?:a(?:\/b.(? +:\/([^\/]+)))) match failed ("a/b.json", undef)

And I'm bored again


In reply to Re: OX and routing: how to declare something like /api/action.:format ($DEBUG++ MANIFEST) by Anonymous Monk
in thread OX and routing: how to declare something like /api/action.:format by mascip

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.