É 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.

Responder a