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.

Responder a