É isso que eu to dizendo. Retornar um JSON por uma chamada ajax não é considerado REST é apenas uma decisão arquitetural sua.
Se voce não precisa disso só fazer com está fazendo mesmo: se for ajax retorne o json, senão retorne a página html. 2012/7/25 Rodrigo Oliveira <[email protected]> > Waldson, > > Esta tese é do Roy Thomas Fielding. > > Com esta tese ele apresentou o conceito REST ao mundo. =) > > Minha monografia foi baseada nesta tese dele. > > > 2012/7/25 Waldson Patricio <[email protected]> > >> Esse link que coloquei é baseado na tese de doutorado >> http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm. >> >> Traz boas e má práticas, exemplos etc. Dá pra se basear por ele. >> >> >> 2012/7/25 felipe bastos <[email protected]> >> >>> Nao é pra ontem .. pra ontem é pegar algo com rest pronto. >>> >>> O que acham de ir discutindo os conceitos de rest .. e ir criando, cada >>> um a sua versao. A que for ficando melhor .. a galera entra como commiter e >>> ajuda. >>> >>> Sendo que todas as alteracoes, em todas as versoes, teriam de ser >>> discutidas aqui, e preferencialmente com referencias (artigos cientificos >>> como o do autor, livros, etc) >>> >>> Gostam da proposta? >>> >>> Vou tentar encontrar um livro em ingles q fala de rest para php. Se >>> tiverem outras fontes confiaveis poderiam compartilhar por link ou anexo. >>> Em 25/07/2012 12:32, "Waldson Patricio" <[email protected]> >>> escreveu: >>> >>> Eu sei disso. Vacilo ali na citação do Request. >>>> >>>> >>>> >>>> 2012/7/25 felipe bastos <[email protected]> >>>> >>>>> 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. >>>>> >>>> >>>> -- >>>> 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. >> > > > > -- > Rodrigo Oliveira > (21) 8747-0180 > > -- > 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.
