Com essa classe Route tenho acesso à se a rota é de um rest ou não: $this->request->route()->is_rest_route() (Estende Request e adiciona um método is_rest que retorna esse valor)
Lembrando que retornar um JSON ou XML se a requisição for ajax não tem nada a ver com API REST e sim com a arquitetura definida por você. 2012/7/25 felipe bastos <[email protected]> > Eu tava pensando e falando de diferenciar uma requisicao rest de uma nao > rest .. > > Mas, entendi .. se vai dedicar uma application so para api rest, blz. > > Pensando em rails .. to me baseando no rails .. ele processa tanto api > REST como controller/action/id na mesma application > Em 25/07/2012 11:55, "Waldson Patricio" <[email protected]> > escreveu: > > É pra diferenciar pelo método sim. Cada método tem sua finalidade (GET >> lista, POST bombril, PUT atualiza, DELETE bem, exclui). >> >> http://developer.mindtouch.com/REST/REST_for_the_Rest_of_Us >> >> Agora se foi feito por ajax, via browser isso não compete ao rest e sim a >> interface de acesso que voce está proporcionando. >> >> 2012/7/25 felipe bastos <[email protected]> >> >>> E lembrando .. >>> >>> Uma requisicao normal e uma rest sao identicas .. >>> >>> REST é apenas conceitual .. nao da pra diferenciar pelo method .. >>> >>> O que pode fazer .. é tratar nos controllers algumas variaveis .. >>> method, accept, formato de retorno, etc de forma mais amigavel. >>> Em 25/07/2012 11:43, "felipe bastos" <[email protected]> escreveu: >>> >>> Muito complicado criar uma rota para cada funcionalidade .. >>>> >>>> Tenta utilizando funcoes anonimas como segundo/terceiro parametro da >>>> route::set .. pode ser uma alternativa mais viavel .. >>>> >>>> Route::set(nome, controller/id, function(){})-default(); >>>> >>>> Na function trata accept, format, etc .. seria legal ter um >>>> Controller_Rest com um render() mais propriado .. >>>> >>>> So nao tenho como tentar agora (so daqui a 15 dias kkk), se conseguirem >>>> .. posta ai >>>> Em 25/07/2012 11:23, "Waldson Patricio" <[email protected]> >>>> escreveu: >>>> >>>>> Olhem ai: http://pastebin.com/dGdybYsT <http://pastebin.com/vLpkq3Uj> >>>>> >>>>> Uso: >>>>> >>>>> Colocar essa classe em um modulo ou no application e na definição de >>>>> rotas: >>>>> >>>>> Route::rest_set(HTTP_Request::GET, 'rest_products_list', >>>>> 'api/products') >>>>> ->defaults(array( >>>>> 'action' => 'list', >>>>> 'controller' => 'products' >>>>> )); >>>>> >>>>> Route::rest_set(HTTP_Request::PUT, 'rest_products_add', >>>>> 'api/products') >>>>> ->defaults(array( >>>>> 'action' => 'add', >>>>> 'controller' => 'products' >>>>> )); >>>>> >>>>> No controller products criar os métodos: action_get_list, >>>>> action_put_add para gerenciar as requisições. Se não quiserem o prefixo do >>>>> método (put, get, post e delete) é só remover o método defaults. >>>>> >>>>> >>>>> 2012/7/25 felipe bastos <[email protected]> >>>>> >>>>>> Vejam o respect/rest respect/relational e outros modulos do respect .. >>>>>> >>>>>> Ta sendo construido pelo alexandre gaigalas do phpbr >>>>>> >>>>>> E o controller pode vir como objeto >>>>>> >>>>>> App-get("rota", "NomeController"); >>>>>> >>>>>> Por modulo, tlvz de pra integrar .. (respect/slim e outros) >>>>>> Em 25/07/2012 09:53, "felipe bastos" <[email protected]> escreveu: >>>>>> >>>>>> Sao os micro ou nano frameworks php .. >>>>>>> >>>>>>> Tem varios nesse estilo .. um deles, feito pela galera do symfony .. >>>>>>> da pra usar os mesmos componentes do symfony nele .. >>>>>>> >>>>>>> Eu criei em ko puro pq quero q a propria aplicacao funcione como api >>>>>>> .. e, toda a aplicacao roda via ajax .. >>>>>>> >>>>>>> Mas nada impede de criar outra aplicacao com slim so para api >>>>>>> Em 25/07/2012 09:45, "Waldson Patricio" <[email protected]> >>>>>>> escreveu: >>>>>>> >>>>>>>> Foi justamente isso que pensei. Estender o Route (RestRoute) e >>>>>>>> implementar esses métodos e usar a interface do Kohana mesmo: >>>>>>>> >>>>>>>> RestRoute::get('rota_id', 'api/products/<id>')->.... >>>>>>>> RestRoute::post('rota_id', 'api/products/<id>')->.... >>>>>>>> RestRoute::put('rota_id', 'api/products/<id>')->.... >>>>>>>> RestRoute::delete('rota_id', 'api/products/<id>')->.... >>>>>>>> >>>>>>>> e a função do controller (Que também terá um RestController) fazer >>>>>>>> as actions com prefixo do método: >>>>>>>> >>>>>>>> function action_get_products >>>>>>>> >>>>>>>> function action_put_products >>>>>>>> >>>>>>>> >>>>>>>> 2012/7/25 jose antoniel de lima Lima <[email protected]> >>>>>>>> >>>>>>>>> Tenho lindo sobre backbone js achei muito entereçante esse >>>>>>>>> framework agora achei esse Slim PHP e possivel configurar as rotas >>>>>>>>> com ele >>>>>>>>> da seguinte maneira, achei bacana esse Slim talvez de para fazer algo >>>>>>>>> com >>>>>>>>> as rotas do kohana aclopado do Slim, algo do tipo: >>>>>>>>> >>>>>>>>> Route::set('slim', array('Slim', 'route')); >>>>>>>>> >>>>>>>>> ai na função do Slim que executa a rota posso fazer retorna uma >>>>>>>>> rota com controller, action e id para que o kohana execute a ação, >>>>>>>>> acho que >>>>>>>>> isso pode funcionar, vou ver quando iniciar o projeto e posto aki. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> //GET route >>>>>>>>> $app->get('/hello/:name', function ($name) { >>>>>>>>> echo "Hello, $name"; >>>>>>>>> }); >>>>>>>>> >>>>>>>>> //POST route >>>>>>>>> $app->post('/person', function () { >>>>>>>>> //Create new Person >>>>>>>>> }); >>>>>>>>> >>>>>>>>> //PUT route >>>>>>>>> $app->put('/person/:id', function ($id) { >>>>>>>>> //Update Person identified by $id >>>>>>>>> }); >>>>>>>>> >>>>>>>>> //DELETE route >>>>>>>>> $app->delete('/person/:id', function ($id) { >>>>>>>>> //Delete Person identified by $id >>>>>>>>> }); >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Atenciosamente, >>>>>>>>> José Antoniel de Lima >>>>>>>>> Analista de Sistemas PHP5 >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Você está recebendo esta mensagem porque se inscreveu no grupo >>>>>>>>> "Kohana Php" dos Grupos do Google. >>>>>>>>> Para postar neste grupo, envie um e-mail para >>>>>>>>> [email protected]. >>>>>>>>> Para cancelar a inscrição nesse grupo, envie um e-mail para >>>>>>>>> [email protected]. >>>>>>>>> Para obter mais opções, visite esse grupo em >>>>>>>>> http://groups.google.com/group/kohana-php?hl=pt-BR. >>>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Você está recebendo esta mensagem porque se inscreveu no grupo >>>>>>>> "Kohana Php" dos Grupos do Google. >>>>>>>> Para postar neste grupo, envie um e-mail para >>>>>>>> [email protected]. >>>>>>>> Para cancelar a inscrição nesse grupo, envie um e-mail para >>>>>>>> [email protected]. >>>>>>>> Para obter mais opções, visite esse grupo em >>>>>>>> http://groups.google.com/group/kohana-php?hl=pt-BR. >>>>>>>> >>>>>>> -- >>>>>> Você está recebendo esta mensagem porque se inscreveu no grupo >>>>>> "Kohana Php" dos Grupos do Google. >>>>>> Para postar neste grupo, envie um e-mail para >>>>>> [email protected]. >>>>>> Para cancelar a inscrição nesse grupo, envie um e-mail para >>>>>> [email protected]. >>>>>> Para obter mais opções, visite esse grupo em >>>>>> http://groups.google.com/group/kohana-php?hl=pt-BR. >>>>>> >>>>> >>>>> -- >>>>> Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana >>>>> Php" dos Grupos do Google. >>>>> Para postar neste grupo, envie um e-mail para >>>>> [email protected]. >>>>> Para cancelar a inscrição nesse grupo, envie um e-mail para >>>>> [email protected]. >>>>> Para obter mais opções, visite esse grupo em >>>>> http://groups.google.com/group/kohana-php?hl=pt-BR. >>>>> >>>> -- >>> Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana >>> Php" dos Grupos do Google. >>> Para postar neste grupo, envie um e-mail para >>> [email protected]. >>> Para cancelar a inscrição nesse grupo, envie um e-mail para >>> [email protected]. >>> Para obter mais opções, visite esse grupo em >>> http://groups.google.com/group/kohana-php?hl=pt-BR. >>> >> >> -- >> Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana >> Php" dos Grupos do Google. >> Para postar neste grupo, envie um e-mail para [email protected] >> . >> Para cancelar a inscrição nesse grupo, envie um e-mail para >> [email protected]. >> Para obter mais opções, visite esse grupo em >> http://groups.google.com/group/kohana-php?hl=pt-BR. >> > -- > Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana > Php" dos Grupos do Google. > Para postar neste grupo, envie um e-mail para [email protected]. > Para cancelar a inscrição nesse grupo, envie um e-mail para > [email protected]. > Para obter mais opções, visite esse grupo em > http://groups.google.com/group/kohana-php?hl=pt-BR. > -- Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana Php" dos Grupos do Google. Para postar neste grupo, envie um e-mail para [email protected]. Para cancelar a inscrição nesse grupo, envie um e-mail para [email protected]. Para obter mais opções, visite esse grupo em http://groups.google.com/group/kohana-php?hl=pt-BR.
