Estou usando o Restler 2.0 e estou tentando adicionar uma nova rota com base no exemplo 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,
);
quando eu faço a chamada url no navegador http://[host]/author/[name to pull]/[email to pull]
Estou tendo o erro a seguir:
{ "error": { "código": 404, "mensagem não encontrada" } }
meu código de autor foi atualizado com o seguinte método
function getLogin($name=NULL,$email=NULL) {
print "in author, getting login";
return $this->dp->getLogin($name,$email);
}
Estou perplexo
Respostas:
0 para resposta № 1Roteamento automático de Luracast Restler
Primeiramente, routes.php
é gerado automaticamente quando você executa o Restler no modo de produção
$r = new Restler(TRUE);
que será sobrescrito quando ligarmos
$r->refreshCache();
ou executá-lo no modo de depuração, por isso não deve ser codificado manualmente.
Restler 2.0 está usando mapeamento automático que é melhor explicado na atualização Exemplo CRUD.
A versão corrigida do seu método deve ser
function get($name=NULL,$email=NULL) {
print "in author, getting login";
return $this->dp->getLogin($name,$email);
}
que irá mapear para
GET /author/:email/:password
onde como seu método está mapeando atualmente para
GET /author/login/:email/:password
Roteamento personalizado do Luracast Restler
Observe também que você pode usar o comentário do PHPDoc para criar mapeamentos personalizados e adicionar mais de um. Por exemplo
/*
* @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);
}
isso criará as rotas a seguir e desativará o roteamento automático para esse método.
GET /author/custom/mapping/:email/:password
GET /author/another/:email/:password