Problema de Entity Body incluso em HTTP DELETE Request

{ April 4th, 2011 }


cmilfont

Autor: cmilfont

Problema que detectei em algumas applicações que estamos desenvolvendo com Extjs+Jquery: Na máquina de entrega o request do tipo DELETE funcionava tranquilamente, na máquina de produção hospedada no Rackspace quebrava. Como a máquina de entrega estava dentro da nossa rede, suspeitei logo da conexão, firewall e essas coisas.

O @rponte me deu a dica desse post que ele encontrou com o mesmo tipo de problema. Nunca tinha percebido que a spec HTTP nem proibe e nem recomenda corpo em DELETE. Não faz muito sentido enviar corpo realmente em DELETE, mas até aí tudo bem.

Para completar, o Extjs já previa esse problema e o JsonWriter possui uma propriedade chamada “encodeDelete” para você explicitamente definir que não quer corpo em DELETE, por default já vem assim.

No console do firebug eu utilizava o $.ajax e o Ext.Ajax diretamente com a mesma url para enviar DELETE e funcionava, mas na aplicação não funcionava. Conversando com o pessoal da rede eles me disseram que trocaram o firewall recentemente e observando o log a chamada sequer passava por lá, ou seja, provavelmente ele já rejeita qualquer conexão DELETE com body.

Fui analizar o código do Extjs e ele enviava um body, a diferença é que era vazio, mas ia. Fiz um hack para destruir qualquer parametro quando a conexão fosse para o DELETE e consertou, como pode ver no código abaixo:


Link caso não consiga ver no seu reader.

Posted in Ajax, Ext, JavaScript, Jquery, REST, Web Development, XMLHttpRequest ~ No Comments

Terceiro Encontro GURU-CE

{ December 18th, 2010 }


cmilfont

Autor: cmilfont

Galera da guru_ce está mandando muito bem, dê uma sacada como foi o encontro:

Fiz código na hora e como sempre não deu tempo de mostrar tudo que eu gostaria, estourei o tempo e saímos de lá por volta de 12:30. Espero ter gerado curiosidade na dobradinha sencha e rails, vamos ver se a galera manda dúvidas para a lista.

Posted in Ext, Frameworks, Rails, REST, Ruby, sencha, Web Development ~ 1 Comment

HTML não serve para REST

{ April 18th, 2008 }


cmilfont

Autor: cmilfont

O maior problema de disponibilizar uma aplicação como API via REST é a construção de aplicações Mashups com formulários HTML sem usar um “proxy” server-side.

Digamos que eu queira construir uma aplicação apenas cliente acessando uma API implementada em REST segundo os “bons constumes”. Segundo a especificação do HTML, o form só possuem dois tipos de método HTTP, o POST e o GET. Isso inviabiliza a submissão de operações de alterações de um recurso pelo método PUT e de exclusão pelo método DELETE. O Fernando Chucre dos Horizontes Digitais me alertou para consultar a especificação do HTML depois que levei uma surra ao tentar implementar isso com form, eu pensei que era problema no apache e estava tentando “habilitar” os outros métodos por não saber que o Form HTML não permite.

Funciona usando AJAX caso a aplicação vá funcionar no mesmo host da API, mas se minha aplicação está hospedada em outro local já não funciona. Outra estratégia que não funciona é Scripttag porque esse só usa GET para adicionar um script no Head da página.

Por enquanto não imaginei uma forma crossbrowser de acessar um recurso remoto pelos métodos PUT e DELETE que não seja usando um Proxy no mesmo host que está hospedado a aplicação consumidora do recurso. Na spec OpenSocial você tem o método makeRequest dessa forma.

Caso alguém tenha uma idéia para contornar esse problema pode comentar aqui.

Posted in Mashup, REST, web2.0 ~ 5 Comments