Waldson .. Nao existe requisicao do tipo REST .. o que existe é tratar uma requisicao http seguindo o modelo conceitual REST.
Todas as requisicoes vao cair na sua rota REST. Quer experimentar, basta setar no header da requisicao http que é get, post, delete ou put via curl ou ajax. REST é um modelo apenas conceitual .. nao é tipo de conexao como o ajax o é. Em 25/07/2012 12:20, "Waldson Patricio" <[email protected]> escreveu: > 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. > -- 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.
