示例网址:
第一个网址: http://sample.com/api/campaign/999 - 此网址包含下一个网址:
http://sample.com/api/campaign/list/1
我如何设置campaign
的路由网址,作为id
后面的方法
并且list
方法也有id
答案 0 :(得分:1)
我会使用专用方法(假设Api.php
是控制器文件)。
制作list()方法并在其中放置有意义的代码
public function list($arg)
{
// code for this one
}
然后在APPPATH.'config/routes.php'
解析请求中:
$route['api/campaign/list/(:num)'] = 'api/list/$1';
$route['api/campaign/(:num)'] = 'api/campaign/$1';
如果您不希望api/list/1
可访问,请使用.htaccess
重定向解决此问题:
RedirectMatch 301 ^/api/list/(.*)$ /api/campaign/list/$1
答案 1 :(得分:0)
还有另一种方法可以做到这一点,不需要任何路线或.htaccess
技巧。
class Api extends CI_Controller
{
public function campaign($param1, $param2 = FALSE)
{
if(is_numeric($param1))
{
$this->do_something($param1);
}
elseif($param2)
{
$valid_methods = ['list', 'foo', 'bar'];
if(in_array($param1, $valid_methods))
{
$this->$param1($param2);
}
}
}
protected function do_something($param)
{
echo "Doing somethig with $param";
}
protected function list($param)
{
echo "running list using $param";
}
protected function foo($param)
{
echo "running foo using $param";
}
protected function bar($param)
{
echo "running bar using $param";
}
}