【问题标题】:codeigniter 2.1.4 support for http methods custom routings?codeigniter 2.1.4 支持 http 方法自定义路由吗?
【发布时间】:2014-03-21 06:47:38
【问题描述】:

我知道codeigniter支持自定义路由到另一个类/方法 例如

$route['product/(:any)'] = "catalog/product_lookup";

但是它是否支持基于 http 请求类型的路由,如 laravel 中那样调用 url?

例如使用 Laravel 中的 get 方法重新路由

Read PUT /users/X  
Route::post('users/{id}','UsersController@update');

【问题讨论】:

    标签: php api codeigniter rest codeigniter-2


    【解决方案1】:

    官方的生产版本没有。在docs 中没有一个字。但是……

    此功能在development branch 中实现。它是从this pull request 合并而来的。以下是涉及该功能的开发版文档的一部分:

    在路由中使用 HTTP 动词

    如果您愿意,可以使用 HTTP 动词(或方法)来定义您的路由规则。这在构建 RESTful 应用程序时特别有用。您可以使用标准 HTTP 动词(GET、PUT、POST、DELETE)或自定义 HTTP 动词(例如:PURGE)。 HTTP 动词规则不区分大小写。您需要做的就是使用 HTTP 动词规则添加数组索引。示例:

        $route['products']['put'] = 'product/insert';
    

    在上面的示例中,对 URI“products”的 PUT 请求将调用“product”控制器类和“insert”方法。

        $route['products/(:num)']['DELETE'] = 'product/delete/$1';
    

    对 URL 的 DELETE 请求以“products”作为第一段,第二段中的数字将被重新映射到“product”类和“delete”方法,将匹配作为变量传递给该方法。

        $route['products/([a-z]+)/(\d+)']['get'] = 'product/$1/$2';
    

    对类似于 products/shirts/123 的 URI 的 GET 请求将调用“product”控制器类和“shirt”方法,并将数字作为方法参数。

    使用 HTTP 动词是可选的,因此如果您希望在一个规则中处理任何 HTTP 动词,您可以只编写不使用 HTTP 动词的路由规则。示例:

        $route['product'] = 'product';
    

    这样,所有使用任何 HTTP 方法的传入请求都将重新映射到“product”类。

    快速解决方案是使用来自该特定提交的更改更新system/core/Router.phphttps://github.com/EllisLab/CodeIgniter/commit/af709d6ebe6ca75913d7a9eedb4fdcd76be45c50

    此外,拉取请求引用 Pigeon library 来处理高级路由配置。

    【讨论】:

    • 谢谢看看
    • 虽然没有提到如何在不使用 composer 的情况下安装。
    • @user3148070 它会:“或者,下载 Pigeon.php 文件并将其拖到您的 application/libraries 文件夹中。自动加载库并离开。”
    • 其实develop分支目前支持http_verb路由
    • @ahmad 是的。我会修改我的答案以更准确。谢谢!
    【解决方案2】:

    是的,您可以在 codeigniter 中提供自定义路由,但您必须将此路由放在 route.php 例如这里 admin 是我的文件夹名称,而 login 是 admin 文件夹中的控制器

    $route['admin'] = "admin/login";
    

    如果我们输入网址http://sonedomain/CI/project/admin

    然后它会直接将我重定向到管理文件夹的登录控制器

    【讨论】:

    • 感谢您的输入,但如上所述,您的回答并不能解决 HTTP REQUEST 类型调用重新路由的问题
    • 检查一下我希望这对你有帮助ellislab.com/forums/viewthread/86113
    • 谢谢,但您的链接正在讨论 HTTP 和 HTTPS。我的问题更多与 GET 、 POST 、 PUT 、 DELETE 类型的 http 请求有关
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多