crud - CakePHP3 CRUD API 和 API 路由
问题描述
我正在为我的后端 API 使用蛋糕之友 CRUD 插件。我也在为我的路由使用 API 前缀:
Router::prefix('Api', function ($routes) {
$routes->extensions(['json', 'xml', 'ajax']);
$routes->resources('Messages');
$routes->resources('ReportedListings');
$routes->fallbacks('InflectedRoute');
});
到目前为止,一切都很好。我的控制器如下:
namespace App\Controller\Api;
use App\Controller\AppController;
use Cake\Event\Event;
use Cake\Core\Exception\Exception;
class MessagesController extends AppController {
use \Crud\Controller\ControllerTrait;
public function initialize() {
parent::initialize();
$this->loadComponent(
'Crud.Crud', [
'actions' => [
'Crud.Add',
'update' => ['className' => 'Crud.Edit']
],
'listeners' => ['Crud.Api'],
]
,'RequestHandler'
);
$this->Crud->config(['listeners.api.exceptionRenderer' => 'App\Error\ExceptionRenderer']);
$this->Crud->addListener('relatedModels', 'Crud.RelatedModels');
}
public function beforeFilter(Event $event){
parent::beforeFilter($event);
}
public function add() {
return $this->Crud->execute();
}
当我按如下方式拨打电话时:
[发布] /api/messages.json
我收到一个错误:
Action MessagesController::index() could not be found, or is not accessible.
我改为使用:
[发布] /messages.json
我没有收到错误消息,我可以添加一条消息。所以问题是为什么 CRUD 使用我的 api 前缀路由来查找索引,我怎样才能避免这种行为?
解决方案
我发现了问题:
Router::prefix('Api', function ($routes) {
....
}
'Api' 应该是小写的!
Router::prefix('api', function ($routes) {
....
}
推荐阅读
- jquery - 如何反转砌体网格的文本叠加和图像?
- php - 使用 laravel API 上传多张图片:具有多态关系
- excel - 通过 Excel 自动进行网络搜索并将结果粘贴回来
- python-3.x - ImportError:无法从“PyQt5”导入名称“QtCore”
- java - 更改链表名称后引发 LocalVariableDeclarationJava 错误
- linux - 在 bash 脚本中的 ssh 命令中使用双引号内的转义字符
- java - 如何在测试代码中测试 Hibernate 对象相等性?
- verilog - 即使语法看起来正确,简单的代码也会产生错误(ISE VERILOG)
- java - 当我尝试在 Eclipse 控制台上打印 Hello World 时,什么都没有打印
- google-apps-script - IMPORTHTML 一段时间后返回 N/A,有解决方法吗?