CakePHP3 REST API 仅触发索引方法
CakePHP3 REST API Triggers only index method
我正在尝试使用 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 请求。我从每种类型的请求中得到的响应是:
再次仔细查看文档,这不是您连接资源路由的方式。他们按照您的方式进行操作,即传递与资源同名的其他范围,将创建类似
的路由
/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...
另见
我正在尝试使用 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 请求。我从每种类型的请求中得到的响应是:
再次仔细查看文档,这不是您连接资源路由的方式。他们按照您的方式进行操作,即传递与资源同名的其他范围,将创建类似
的路由/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...
另见