php Рестлер Маршруты - PullRequest
3 голосов
/ 08 ноября 2011

Я использую Restler 2.0 и пытаюсь добавить новый маршрут на основе примера CRUD

$o['GET']['author/:name/:email']=array (
  'class_name' => 'Author',
  'method_name' => 'getLogin',
  'arguments' => 
  array (
    'name'  => 0,
    'email' => 1,
  ),
  'defaults' => 
  array (
    0 => NULL,
    1 => NULL,
  ),
  'metadata' => 
  array (
  ),
  'method_flag' => 0,
);  

, когда я выполняю URL-вызов в браузере http://[host]/author/[name to pull]/[email to pull]

Я получаю следующую ошибку:

{
  "error": {
    "code": 404,
    "message": "Not Found"
  }
}

мой авторский код был обновлен следующим методом

function getLogin($name=NULL,$email=NULL) {
    print "in author, getting login";
    return $this->dp->getLogin($name,$email);
}

Я в тупике.

1 Ответ

0 голосов
/ 08 ноября 2011

Luracast Restler Auto Routing

Во-первых, routes.php генерируется автоматически при запуске Restler в рабочем режиме

$r = new Restler(TRUE);

, который будет перезаписан при вызове

$r->refreshCache();

или запустите его в режиме отладки, чтобы он не кодировался вручную.

Restler 2.0 использует auto mapping , что лучше объяснено в обновленном примере CRUD .

Исправленная версия вашего метода должна быть

function get($name=NULL,$email=NULL) {
    print "in author, getting login";
    return $this->dp->getLogin($name,$email);
}

, который будет отображаться на

GET /author/:email/:password

где ваш метод в настоящее время отображается на

GET /author/login/:email/:password

Luracast Restler Custom Routing

Также обратите внимание, что вы можете использовать комментарий PHPDoc для создания пользовательских отображений, и вы можете добавить более одного. Например

/*
* @url GET /custom/mapping/:name/:email
* @url GET /another/:name/:email
*/
function get($name=NULL,$email=NULL) {
    print "in author, getting login";
    return $this->dp->getLogin($name,$email);
}

это создаст следующие маршруты и отключит автоматическую маршрутизацию для этого метода.

GET /author/custom/mapping/:email/:password
GET /author/another/:email/:password
...