5

Perl Web アプリケーション フレームワークの Dancer を使用していますが、URL マッチングで末尾のスラッシュに問題があります。

たとえば、オプションの Id パラメータを使用して、次の URL を一致させたいとします。

get '/users/:id?' => sub
{
    #Do something
}

両方とも/users/morgan一致し/users/ます。しませ/usersんが。これはあまり均一ではないようです。私が好むので、末尾のスラッシュなしで URL:s のみを照合します: /users/morganおよび/users. どうすればそれを達成できますか?

4

3 に答える 3

8

もう 1 つのアプローチは、名前付きサブを使用することです。Dancer コードのすべての例では、匿名サブを使用する傾向がありますが、匿名でなければならないということは何もありません。

get '/users' => \&show_users;
get '/users/:id' => \&show_users;

sub show_users
{
    #Do something
}

Dancer がルート マッチングを行う方法により、これは順序に依存することに注意してください。私の経験では、最初に要素の少ないルートをリストする必要がありました。

于 2013-02-18T13:43:18.093 に答える
5

id/user/on からオプションのスラッシュまでのすべてが含まれます。

get qr{^/users/?(?<id>[^/]+)?$} => sub {
  my $captures = captures;
  if ( defined $captures->{id} ) {
    return sprintf 'the id is: %s', $captures->{id};
  }
  else {
    return 'global user page'
  }
};
于 2013-02-18T11:07:50.347 に答える