【问题标题】:Codeigniter Routes ConflictCodeigniter 路由冲突
【发布时间】:2013-06-05 14:02:18
【问题描述】:

我正在使用 codeigniter 创建一个 restapi,但我遇到了一些路由问题。

这是等式:

我必须导航/users/ 到索引功能,

我必须将 /users/{MongoId} 导航到 /users/show/{MongoId}

我必须将/users/function 导航到/users/function

这里,我的路线:

$route['api/users/do_login'] = "api/users/do_login";
$route['api/users/(.*)'] = "api/users/show/$1";

当我删除 (.*) 路由(或两者)时,我的 do_login 函数可以成功运行。但不是我的 api-index 函数,因为 Codeigniter 将 MongoId 作为函数名并失败。

当我写回(或两者)时,我的索引功能成功运行,但我的登录没有。 因为它试图发送函数名来显示函数作为参数。

你能帮我解决这个问题吗?

【问题讨论】:

    标签: codeigniter codeigniter-url codeigniter-routing


    【解决方案1】:

    颠倒routes的顺序,CodeIgniters路由优先。

    你寻找这个结构:

    $route['api/users/(:any)'] = "api/users/show/$1";
    $route['api/users/do_login'] = "api/users/do_login";
    

    也用(:any)代替(.*)它们是一样的。

    CodeIgniter Routing

    【讨论】:

    • 哦,我在提出问题后尝试了所有这些。但现在问题似乎更大了。我使用 philsturgeon 的 codeigniter-restserver 并没有救我。我认为他在他的 REST_Controller 中使用了重新映射,我的路线总是返回 404(无方法)。你有什么想法吗?
    • 尝试在您自己的控制器中重新映射“...因为 Codeigniter 将 MongoId 作为函数名并失败。”,或者这也不成问题?
    • 我现在仔细检查了它。当我使用您编写的路由并从他的类中请求一些输出时,它说调用的方法名为“show_post”。这让我觉得 :any 会阻止其他人。无论如何,谢谢。
    • 如果其 ID 使用 (:num) 代替。我认为它仍然没有按预期工作。我深入研究了 RESTserver 代码并找到了_remap()。请求的url是什么?您可能会将路线更改为'api/users/(:any)/(:any)' 或类似的东西...
    • (:num) 不起作用。它不认为它是十六进制的数字。
    【解决方案2】:

    这里是工作路线。

    $route['api/users/do_login/(:any)'] = "api/users/do_login/$1";
    $route['api/users/(:any)'] = "api/users/show/$1";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-15
      • 2018-03-25
      • 2018-06-07
      • 2018-05-23
      • 1970-01-01
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      相关资源
      最近更新 更多