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.
Trackbacks & Pingbacks
[…] 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!