我正在尝试使用CakePHP3构建RESTful API。问题是无论我发送什么类型的HTTP请求,它总是启动索引方法。
我的routes.php配置:
/**
* REST Routes
*/
Router::scope('/articles', function (RouteBuilder $routes) {
$routes->resources('Articles');
});
Router::scope('/users', function (RouteBuilder $routes) {
$routes->resources('Users');
});
Router::scope('/categories', function (RouteBuilder $routes) {
$routes->resources('Categories');
});
示例控制器如下所示:
public function initialize()
{
parent::initialize();
$this->autoRender = false;
$this->response->cors($this->request)
->allowOrigin(['*'])
->allowMethods(['GET', 'POST', 'PUT', 'DELETE'])
->build();
}
public function index()
{
echo 'index';
}
public function view($id = null)
{
echo "view:".$id;
}
public function add()
{
echo 'add';
}
我使用Postman发送HTTP请求。我从各种类型的请求得到的回应是:
答案 0 :(得分:3)
再次仔细查看文档,而不是如何连接资源路由。他们这样做,即传递与ressource同名的其他作用域,会创建像
这样的路径/users/users
(选中bin/cake routes
查看所有已连接路线的列表),即您访问
/users
匹配不同的路线,可能是后备路线。
您应该将路由连接到/
范围(假设屏幕截图中的/api/
部分是文件夹结构的一部分),例如:
Router::scope('/', function (RouteBuilder $routes) {
$routes->resources('Articles');
$routes->resources('Users');
$routes->resources('Categories');
});
这将以
的形式创建路线/users (GET)
/users (POST)
/users/:id (GET)
etc...
另见