Tratando o retorno de server methods em PHP a partir de DataSnap REST

Criar aplicações PHP para conectar a servidores DataSnap REST é relativamente simples já que o RadPHP traz um assistente que gera as classes proxies em PHP, mas como PHP é uma linguagem dinâmica e não é fortemente tipada, isso abre margem para erros durante a chamadas dos server methods, além disso em chamadas REST o retorno é sempre um JSON object, mas tudo isso é relativamente fácil de resolver.

Considere o seguinte cenário onde você tem um método de autenticação que retorna TRUE ou FALSE, claro que você deve estar pensando que em caso de erro o método irá retornar sempre falso, isso não é necessariamente verdade e vou explicar em seguida.

No caso de aplicações PHP ao executar um server method você sempre receberá um objeto como retorno e a partir dele executará as operações que sua aplicação requer.

Assumindo que você já gerou a classe proxy em PHP no RadPHP, temos o que precisamos para executar nossas regras de negócio no servidor DataSnap a partir da aplicação PHP.

Ao criar a classe proxy o assistente cria um datamodule que contem o componente DSRestConnection, este componente contém as informações necessárias para conectar ao servidor como Host, Port, UserName e Password.

O código abaixo executa o método TUser.isValidUser passando usuário e senha como parâmetro, se o retorno for uma instância de DSObject a propriedade result deste objeto terá o valor TRUE ou FALSE, caso ocorra uma EXCEPTION no servidor não será retornado o objeto DSObject e você terá a propriedade error a sua disposição contento a mensagem de erro.

type
   global $ClientModuleDataModule1;
   $conninfo = $ClientModuleDataModule1->DSRestConnection1->ConnectionInfo;

   $user = new TUser($conninfo);

   $valid = $user->IsValidUser($this->edUserName->Text, $this->edPassword->Text);

   if($valid instanceof DSObject)
   {
      if($valid->result)
      {
         setcookie('loginid', $this->edUserName->Text);
         redirect("Main.php");
      }
      else
      {
         $this->Button1->Caption = "Username/Password invalid";
      }
   }
   else
   {
      $this->Button1->Caption = $valid->error;
   }

Nos exemplos do RAD Studio XE no sourceforge estão disponíveis o código desta aplicação cliente em PHP e o servidor em Delphi XE, faça o download aqui.

1 responder

Trackbacks & Pingbacks

  1. […] This post was mentioned on Twitter by Embarcadero Tech. Embarcadero Tech said: Tratando o retorno de server methods em PHP a partir de DataSnap REST: Criar aplicações PHP para conectar a serv… http://bit.ly/hRdZ4g […]

Deixe uma resposta

Want to join the discussion?
Feel free to contribute!

Deixe uma resposta

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


Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.