2013-10-07 3 views
0

Я работаю на CakePHP JSON REST API -CakePHP запрос REST API POST вызывает индекс(), а не добавлять()

Я следую учебник REST на http://book.cakephp.org/2.0/en/development/rest.html и тестирование все через расширение Chrome " Advanced REST Client»

единственный путь я могу получить, чтобы работать, как ожидается, является индекс() с помощью запроса GET - которая возвращает мне массив моих тестовых данных (как и ожидалось)

Когда я POST в попытаться создать новую запись, я получаю 404, аналогично, я добавил некоторые тестовые данные в свою БД, чтобы попробовать GET-запрос для рецепта по ID (36-часовой UUI D) и маршруты запроса к функции index().

Я получаю следующий ответ, когда я пытаюсь сделать что-нибудь, но простой запрос получите:

{ 
code: 404 
url: "https://stackoverflow.com/users/d8d9701e-2f6e-11e3-af16-2513f388d17e" 
name: "Action UsersController::d8d9701e-2f6e-11e3-af16-2513f388d17e() could not be found." 
} 

Запрос здесь является GET для пользователей/d8d9701e-2f6e-11e3-af16-2513f388d17e

В моей routes.php файле:

Router::resourceMap(array(
    array('action' => 'index', 'method' => 'GET', 'id' => false), 
    array('action' => 'view', 'method' => 'GET', 'id' => true), 
    array('action' => 'add', 'method' => 'POST', 'id' => false), 
    array('action' => 'edit', 'method' => 'PUT', 'id' => true), 
    array('action' => 'delete', 'method' => 'DELETE', 'id' => true), 
    array('action' => 'update', 'method' => 'POST', 'id' => true) 
)); 

Router::mapResources('users'); 
Router::parseExtensions('json'); 

мой UsersController.php выглядит следующим образом: http://pastebin.com/bDxRLbTP

ПРИМЕЧАНИЕ Прокомментированное правило контроля доступа, похоже, не влияет на мои проблемы. Я пробовал это с и без правила контроля, которое я не на 100% положительное, существует в нужном месте, во всяком случае. Но я думал, что POST не работает из-за некоторых проблем с CORS. Тем не менее, это не объясняет проблемы GET при попытке найти конкретную запись.

В соответствии с учебным пособием, я чувствую, что мне действительно не нужна функция Router :: resoureMap, но я все равно набросил ее на всякий случай. Я также попытался поставить его под маршрутизатором :: mapResources называют - но в учебнике говорится:

«Переписывание карты ресурсов по умолчанию, будущий вызовы mapResources() будет использовать новые значения.»

Так что я уверен, что он должен быть вызван перед вызовом mapResources()

СПАСИБО!

ответ

0

Проблема в том, что, по-видимому, у меня были мои функции в неправильной области файла routes.php.

По: CakePHP - REST POST functionality not working with default mapping

В routes.php я имел следующее в моих последних строках файла.

Router::mapResources('users'); 
Router::parseExtensions('json'); 

Они должны быть перемещены выше этой линии:

require CAKE . 'Config' . DS . 'routes.php'; 
Смежные вопросы