Apache Flex/ Flex

Apache Flex e requisições PUT/GET/POST/DELETE

rest-php-call

Exsitem vários posts aqui sobre REST, vez ou outra alguém sempre anda perguntando nas listas como usar arquitetura REST com o Flex, já que ele suporta apenas GET/POST por padrão. Na verdade essa última sentença é falsa, já que desde a versão 4.9 o Flex possui suporte a REST completo.

Vejamos um exemplo básico:

Suponha-se que você tem um serviço REST e que ele se comunique com o formato JSON, geralmente em 99.99% dos casos são assim, você teria algo do tipo:

 
GET: /posts/all
PUT: /posts/{id}
POST:/posts/new
DELETE:/posts{id}

E você precisa chamar esses métodos dentro da sua interface Flex, basicamente você faria da seguinte forma.

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
 
	<s:layout>
		<s:VerticalLayout/>
	</s:layout>
	<fx:Declarations>
		<s:HTTPService id="REstfulService_demo" resultFormat="text" result="getRestfulHandler(event)" fault="faultRestfulHandler(event)">
 
		</s:HTTPService>
	</fx:Declarations>
 
	<fx:Script>
		<![CDATA[
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
 
			private var demo_url:String = "http://www.seusite.com/api/";
			protected function callService(method:String):void
			{
					switch(method)
					{
						case 'GET':
								REstfulService_demo.method = 'GET';
								REstfulService_demo.url = demo_url + '/posts/all';
						break;
						case 'POST':			
								REstfulService_demo.method = 'POST';
								REstfulService_demo.headers = 'application/json';
								REstfulService_demo.request = JSON.stringify(new Post(id_post,'exemplo de titulo'));
								REstfulService_demo.url = demo_url + '/posts/new';
						break;
						case 'DELETE':
								var id_post:Number = 100;
								REstfulService_demo.method = 'DELETE';
								REstfulService_demo.headers = 'application/json';
								REstfulService_demo.request = id_post;
							break;
						case 'PUT':
								var id_post:Number = 100;
								REstfulService_demo.method = 'PUT';
								REstfulService_demo.headers = 'application/json';
								REstfulService_demo.request = id_post;
							break;
					}
 
 
					REstfulService_demo.send();
 
			}
 
			protected function getRestfulHandler(event:ResultEvent):void
			{
				// tratar o retorno
 
			}
 
			protected function faultRestfulHandler(event:FaultEvent):void
			{
				// ver mensagem de erro em modo debug
				trace(event.fault.toString());
 
			}
 
		]]>
	</fx:Script>
 
	<s:HGroup>
		<s:Button label="PUT" click="callService('PUT')"/>
		<s:Button label="POST" click="callService('POST')"/>
		<s:Button label="DELETE" click="callService('DELETE')"/>
		<s:Button label="GET" click="callService('GET')"/>
	</s:HGroup>
</s:Application>

Basta setar o Headers da requisição para aceitar o formato JSON, assim sua interface Flex comunica-se perfeitamente com o serviço.

3 thoughts on “Apache Flex e requisições PUT/GET/POST/DELETE

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados com *