perl – 如何使用Catalyst和uri链接REST接口?
我期待收到uri的喜欢
/user/*/account/* 我有一个用户函数定义为 sub user :Path('/user') :PathPart('') :ActionClass('REST' ) {} 然后 sub user_GET :PathPart('user') Chained('/') CaptureArgs(1) { #do stuff } 对于帐户我也是类似地定义它们. sub account :Path('/account') :PathPart('') :ActionClass('REST') {} sub account_GET :PathPart('account') Chained('user_GET') Args(1) { #do stuff } 所以,问题是当我将account_GET中的Chained设置为服务器的’user_GET’时 [debug] Loaded Chained actions: .-----------------------------+--------------------------------------. | Path Spec | Private | +-----------------------------+--------------------------------------+ | /user/*/account/* | /mcp/user_GET (1) | | | => /mcp/account_GET | '-----------------------------+--------------------------------------' 当我将account_GET中的Chained设置为’user’时,服务器调试显示: [debug] Unattached Chained actions: [debug] Unattached Chained actions: .-------------------------------------+--------------------------------------. | Private | Missing parent | +-------------------------------------+--------------------------------------+ | /mcp/account_GET | /mcp/user | '-------------------------------------+--------------------------------------' 问题是,显然后者没有建立而前者是 所以问题是如果我正在调用/ user / 12345 / account / 23456我该如何获得该路径 解决方法
就个人而言,我会在用户控制器中使用以下内容:
package MyApp::Controller::User; ... # root of the chain sub object: Chained PathPart('user') CaptureArgs(1) { ... } 上面的对象操作会将用户对象加载到存储中.现在我将用户控制器链接到上面,如下所示: package MyApp::Controller::User::Account; ... # chains to the action loading the user object and dispatches RESTy sub account: Chained('/user/object') ActionClass('REST') Args(1) { ... } # handle individual request methods sub account_GET { ... } sub account_POST { ... } 此处,帐户操作为account_ *方法提供了执行实际操作的公共数据. 将方法特定操作作为链的一部分(例如让用户对帐户操作的POST请求作出反应)从设计角度来看似乎有点违反直觉.这可能有用,但我从未尝试过. 以上示例当然是简化的.我通常在每个控制器中设置基本操作,设置命名空间和公共父操作,控制器中的所有其他操作将链接该操作.然后我将有一个像上面这样的对象来加载单个资源,以及一个root用于控制器的根动作.由于您可以构建任何类型的树结构,因此它非常灵活.因此,最佳解决方案通常取决于您的约束条件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |