gpt4 book ai didi

perl - 如何将/doc/添加到 Catalyst 中每个 URL 的末尾?

转载 作者:行者123 更新时间:2023-12-01 05:47:34 27 4
gpt4 key购买 nike

我们试图让我们的 REST API 更友好一些,我们有一个继承自 Catalyst::Controller::REST 的 REST API 基类。每个 REST 类都可以标识它接受的查询参数。我们认为将这些信息公开并将其放入基类会很好:

sub doc : Regex('/doc$') {
my ( $self, $c ) = @_;
$c->stash->{params} = $c->forward('allowed_query_params');
}

从那里开始,每个 REST url 都可以在末尾添加/doc/以显示它接受哪些查询参数。

它不起作用。 $self 始终是 PIPs::C::API::V1::Franchise 实例,无论调用哪个 URL。这似乎是因为这些:
[26 Feb 2009 15:07:40,509] [Catalyst.Dispatcher] [DEBUG] Loaded Private actions:
.-----------------------+--------------------------------------+--------------.
| Private | Class | Method |
+-----------------------+--------------------------------------+--------------+
...
| /api/v1/franchise/doc | PIPs::C::Api::V1::Franchise | doc |

和:
[26 Feb 2009 15:07:40,514] [Catalyst.DispatchType.Regex] [DEBUG] Loaded Regex actions:
.--------------------------------------+--------------------------------------.
| Regex | Private |
+--------------------------------------+--------------------------------------+
| /doc$ | /api/v1/franchise/doc |
| /doc$ | /api/v1/version/doc |
| /doc$ | /api/v1/creditrole/doc |
| /doc$ | /api/v1/doc |
| /doc$ | /api/v1/segmentevent/doc |
| /doc$ | /api/v1/collection/doc |
| /doc$ | /api/v1/episode/doc |

所以“doc”方法的第一个实例通过 Franchise 调度,即使给定 URL 的 Controller 是 API::V1::Version 或类似的东西。

我该如何解决这个问题? LocalRegex 显然不起作用,而且链式操作似乎不合适,因为由于我们应用程序的性质,我们永远不知道“/api/v1/”和“/doc/”之间会有多少路径部分。

我错过了什么?

最佳答案

我想你想要 LocalRegex而不是 Regex .但是为什么要使用正则表达式,而不仅仅是简单的 Local ?

关于perl - 如何将/doc/添加到 Catalyst 中每个 URL 的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/590972/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com