【发布时间】:2014-09-21 01:38:57
【问题描述】:
我正在尝试使用 CakePHP 构建一个 restfull api,但是当我尝试通过 url /api/categories/1.json 获取记录时,我收到消息:
{
"code": 404,
"name": "Action CategoriesController::api_1() could not be found.",
"message": "Action CategoriesController::api_1() could not be found.",
"url": "\/api\/categories\/1.json"
}
当我想使用 api 时,我想使用前缀“api”。当我使用 url /api/categories.json 时很奇怪,然后它按预期工作,这意味着我得到了所有类别。
这里有一些代码sn-ps。
routes.php
Router::mapResources('categories');
Router::parseExtensions('json');
Router::resourceMap(array(
array('action' => 'index', 'method' => 'GET', 'id' => false, 'prefix' => 'api'),
array('action' => 'view', 'method' => 'GET', 'id' => true, 'prefix' => 'api'),
array('action' => 'add', 'method' => 'POST', 'id' => false, 'prefix' => 'api'),
array('action' => 'edit', 'method' => 'PUT', 'id' => true, 'prefix' => 'api'),
array('action' => 'delete', 'method' => 'DELETE', 'id' => true, 'prefix' => 'api'),
array('action' => 'update', 'method' => 'POST', 'id' => true, 'prefix' => 'api')
));
CategoriesController.php
class CategoriesController extends AppController {
public $components = array(
'RequestHandler'
);
public function api_index() {
$this->set('categories', $this->Category->find('all'));
}
public function api_view($id) {
$category = $this->Category->findById($id);
$this->set('category', $category);
}
}
core.php
Configure::write('Routing.prefixes', array('api'));
观看次数
我的视图位于地图 View/Categories/json/ 中,我将它们命名为 api_index.ctp 和 api_view.ctp。
【问题讨论】:
-
您是否尝试过评论所有
resourceMap代码并在mapResources中添加api_前缀作为选项?由于您的路线似乎是默认路线(前缀除外)。 prefix in mapResources -
@ndm 我试过这个选项,但它没有解决我的问题。现在,我确实为每个操作创建了连接,但有限制。看我的回答。