[7808] | 1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
---|
| 2 | <html> |
---|
| 3 | <head> |
---|
| 4 | <title>.:: ExpressoLivre - API REST ::.</title> |
---|
| 5 | <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /> |
---|
| 6 | <meta name="author" content="Equipe Expresso Livre" /> |
---|
| 7 | <meta name="keywords" content="rest, json, javascript" /> |
---|
| 8 | <meta name="description" content="Cliente para demonstração do RECURSO REST" /> |
---|
| 9 | <!--CSS--> |
---|
| 10 | <link rel="stylesheet" href="./css/styles.css"/> |
---|
| 11 | <link rel="stylesheet" href="./css/smoothness/jquery-ui-1.9.2.custom.css"/> |
---|
| 12 | <link rel="stylesheet" href="./plugins/prettify/prettify.css"/> |
---|
| 13 | |
---|
| 14 | <!--JavaScript--> |
---|
| 15 | <script type="text/javascript" src="./plugins/jquery/jquery-1.9.0.min.js"></script> |
---|
| 16 | <script type="text/javascript" src="./plugins/jquery/jquery-ui-1.9.2.custom.min.js"></script> |
---|
| 17 | <script type="text/javascript" src="./plugins/ejs/ejs.js"></script> |
---|
| 18 | <script type="text/javascript" src="./plugins/ejs/ejs_production.js"></script> |
---|
| 19 | <script type="text/javascript" src="./plugins/ejs/view.js"></script> |
---|
| 20 | <script type="text/javascript" src="./plugins/prettify/prettify.js"></script> |
---|
| 21 | <script type="text/javascript" src="./js/functions.js"></script> |
---|
| 22 | <script type="text/javascript" src="./js/resources.js"></script> |
---|
| 23 | <script type="text/javascript" src="./js/execute.js"></script> |
---|
| 24 | |
---|
| 25 | </head> |
---|
| 26 | <body> |
---|
| 27 | |
---|
| 28 | <div id="page_header"></div> |
---|
| 29 | |
---|
| 30 | <h2>Documentação da API REST do Expresso</h2> |
---|
| 31 | |
---|
| 32 | <div id="tabs_content"> |
---|
| 33 | <ul> |
---|
| 34 | <li><a href="#content">Sobre a API</a></li> |
---|
| 35 | <li><a href="#resources">Recursos</a></li> |
---|
[7818] | 36 | <li><a href="#exemplos_uso">Exemplo de uso</a></li> |
---|
[7808] | 37 | <li><a href="#links_rel">Links Relacionados</a></li> |
---|
| 38 | </ul> |
---|
| 39 | <div id="content"> |
---|
| 40 | <div id="content_1"> |
---|
| 41 | <h3>RECURSOS DISPONÍVEIS NA API</h3> |
---|
| 42 | <div> |
---|
| 43 | <p> |
---|
| 44 | Através da lista de recursos abaixo, você poderá realizar testes no ambiente de demonstração |
---|
| 45 | da API REST disponibilizada pelo Expresso. |
---|
| 46 | </p> |
---|
| 47 | |
---|
| 48 | <p> |
---|
| 49 | Atualmente os seguintes recursos estão disponibilizados: |
---|
| 50 | </p> |
---|
| 51 | |
---|
| 52 | <ul> |
---|
| 53 | <li>Login - Realiza a autenticação do usuário, gerando uma chave de autenticação;</li> |
---|
| 54 | <li>Logout - Desloga o usuário, invalidando a chave de autenticação;</li> |
---|
| 55 | <li>ExpressionVersion - para verificar a versão atual do Expresso;</li> |
---|
| 56 | <li>Mail/Folders - Lista a Pasta do Usuário;</li> |
---|
| 57 | <li>Mail/AddFolder - Adiciona uma nova pasta;</li> |
---|
| 58 | <li>Mail/Messages - Retornas as mensagens do usuário;</li> |
---|
| 59 | <li>Mail/Attachment - Retorna o anexo da mensagem para o download;</li> |
---|
| 60 | <li>Mail/Send - Envia uma mensagem de email;</li> |
---|
| 61 | <li>Mail/RenameFolder - Renomeia uma pasta;</li> |
---|
| 62 | <li>Mail/DelFolder - Exclui uma pasta;</li> |
---|
| 63 | <li>Mail/CleanTrash - Limpa a lixeira;</li> |
---|
| 64 | <li>Mail/SendSupportFeedback - Envia uma mensagem de sugestão para o administrador do Expresso;</li> |
---|
| 65 | <li>Catalog/Contacts - Retorna os contatos do catálogo pessoal e geral;</li> |
---|
| 66 | <li>Catalog/ContactPicture - Retorna a foto de um contato em BASE64;</li> |
---|
| 67 | <li>Calendar/Events - Retorna os eventos do calendário;</li> |
---|
| 68 | <li>Admin/CreateUser - Criação de usuários (necessário ter permissão de acesso no módulo expressoAdmin).</li> |
---|
| 69 | <li>Admin/SearchUser - Procura de usuários (necessário ter permissão de acesso no módulo expressoAdmin).</li> |
---|
| 70 | <li>Admin/DeleteUser - Exclusão de usuários (necessário ter permissão de acesso no módulo expressoAdmin).</li> |
---|
| 71 | <li>Admin/EditUser - Edição de usuários (necessário ter permissão de acesso no módulo expressoAdmin).</li> |
---|
| 72 | <li>Admin/RenameUser - Renomeação de usuários (necessário ter permissão de acesso no módulo expressoAdmin).</li> |
---|
| 73 | <li>Admin/UpdateUser - Atualização de usuários (necessário ter permissão de acesso no módulo expressoAdmin).</li> |
---|
| 74 | </ul> |
---|
| 75 | </div> |
---|
| 76 | </div> |
---|
| 77 | |
---|
| 78 | <div id="content_2"> |
---|
| 79 | <h3>COMO FUNCIONA A API REST</h3> |
---|
| 80 | <div> |
---|
| 81 | <p> |
---|
| 82 | Para ter acesso a um dos recursos listados acima, é necessário que sua aplicação realize uma |
---|
| 83 | requisição HTTP pelos métodos( GET, POST ), para a URL que é formado pelo |
---|
| 84 | endereço do servidor Expresso mais o nome do recurso que deseja utilizar. |
---|
| 85 | </p> |
---|
| 86 | |
---|
| 87 | <p> |
---|
| 88 | Cada recurso possui um conjunto de parâmetros que são necessários para atender as requisições enviadas |
---|
| 89 | ao servidor do Expresso. |
---|
| 90 | </p> |
---|
| 91 | |
---|
| 92 | <p> |
---|
| 93 | Com exceção do recurso <i><b>ExpressionVersion</b></i>, todos os outros recursos necessitam de uma |
---|
| 94 | autenticação ( usuário e senha, que retornará uma chave de acesso ). |
---|
| 95 | </p> |
---|
| 96 | |
---|
| 97 | </div> |
---|
| 98 | </div> |
---|
| 99 | </div> |
---|
| 100 | |
---|
| 101 | <div id="resources"> |
---|
| 102 | <p> |
---|
| 103 | Informe a URL de contexto da sua API: |
---|
| 104 | </p> |
---|
| 105 | |
---|
| 106 | <p> |
---|
| 107 | <input id="serverAPI" type="text" size="70" value="" name="serverAPI"> |
---|
| 108 | </p> |
---|
| 109 | |
---|
| 110 | |
---|
| 111 | <p>Chave de Autenticação</p> |
---|
| 112 | |
---|
| 113 | <p> |
---|
| 114 | <div id="key_auth_server_expresso"> |
---|
| 115 | <span style="font-weight:bold;color:red">USUÁRIO NÃO AUTENTICADO</span> |
---|
| 116 | <input type="hidden"> |
---|
| 117 | </div> |
---|
| 118 | </p> |
---|
| 119 | |
---|
| 120 | <div id="resources_expresso"></div> |
---|
| 121 | |
---|
| 122 | </div> |
---|
| 123 | |
---|
| 124 | <div id="exemplos_uso"> |
---|
| 125 | |
---|
[7816] | 126 | <p> |
---|
[7820] | 127 | Um exemplo de código de uma chamada AJAX, utilizando a Jquery. Para enviar parâmetros consulte a aba Resources, |
---|
| 128 | onde é demonstrado o envio destes parâmetros e quais deverão ser enviados a cada resource. |
---|
[7816] | 129 | </p> |
---|
[7808] | 130 | |
---|
[7820] | 131 | <p> |
---|
| 132 | <h3>Utilizando o Ajax da Jquery</h3> |
---|
| 133 | |
---|
| 134 | <pre class='prettyprint'> |
---|
| 135 | $.ajax( |
---|
| 136 | { |
---|
| 137 | type : "POST", |
---|
| 138 | url : "client_rest.php", |
---|
| 139 | data : |
---|
| 140 | { |
---|
| 141 | id : < ID > |
---|
[7821] | 142 | params : < ENVIE AQUI SEUS PARAMETROS EM FORMATO JSON Exemplo : {"param1":"valor"} > |
---|
[7820] | 143 | serverUrl : "http://expresso.pr.gov.br/api/rest/< RESOURCE REST >", |
---|
| 144 | methodType : "POST" |
---|
| 145 | } |
---|
| 146 | }); |
---|
| 147 | </pre> |
---|
| 148 | |
---|
| 149 | </p> |
---|
| 150 | |
---|
| 151 | <p> |
---|
| 152 | O resource ExpressoVersion não necessita de parâmetros e responde a versão do Expresso e a versão da API REST. |
---|
| 153 | No trecho abaixo é demonstrado um código que utiliza este resource. |
---|
| 154 | </p> |
---|
| 155 | |
---|
[7816] | 156 | <p> |
---|
[7820] | 157 | Veja este exemplo funcionando ( <a href="./exemplo/exemplo.zip">BAIXAR ESTE EXEMPLO</a>). |
---|
[7816] | 158 | </p> |
---|
| 159 | |
---|
| 160 | <p> |
---|
| 161 | <h3>Enviando as informações com Javascript</h3> |
---|
| 162 | |
---|
| 163 | <pre class='prettyprint'> |
---|
| 164 | $.ajax( |
---|
| 165 | { |
---|
| 166 | type : "POST", |
---|
| 167 | url : "client_rest.php", |
---|
| 168 | data : |
---|
| 169 | { |
---|
[7820] | 170 | id : ""; |
---|
| 171 | params : ""; |
---|
| 172 | serverUrl : "http://expresso.pr.gov.br/api/rest/ExpressoVersion", |
---|
| 173 | methodType : "POST" |
---|
[7816] | 174 | }, |
---|
| 175 | beforeSend: function() |
---|
| 176 | { |
---|
| 177 | // Coloque aqui seu código; |
---|
| 178 | }, |
---|
| 179 | success: function(response) |
---|
| 180 | { |
---|
| 181 | //Coloque aqui seu código; |
---|
| 182 | }, |
---|
| 183 | error: function(response) |
---|
| 184 | { |
---|
| 185 | //Coloque aqui seu código; |
---|
| 186 | } |
---|
[7818] | 187 | }); |
---|
[7816] | 188 | </pre> |
---|
| 189 | |
---|
| 190 | </p> |
---|
| 191 | |
---|
| 192 | <p> |
---|
| 193 | <h3>Recebendo as informações no PHP</h3> |
---|
| 194 | |
---|
| 195 | <pre class='prettyprint'> |
---|
| 196 | <?php |
---|
| 197 | |
---|
| 198 | $serverUrl = $_REQUEST['serverUrl']; |
---|
| 199 | $methodType = $_REQUEST['methodType']; |
---|
| 200 | $params = $_REQUEST['params']; |
---|
| 201 | $id = ( $_REQUEST['id'] ) ? $_REQUEST['id'] : time(); |
---|
| 202 | |
---|
| 203 | $data = "id=".$id."&params=" . stripslashes($params); |
---|
| 204 | |
---|
| 205 | function callJSONRPC($url, $data, $method) |
---|
| 206 | { |
---|
| 207 | $ch = curl_init(); |
---|
| 208 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); |
---|
| 209 | |
---|
| 210 | if($method == "POST"){ |
---|
| 211 | curl_setopt($ch, CURLOPT_POST, 1); |
---|
| 212 | curl_setopt($ch, CURLOPT_POSTFIELDS, $data); |
---|
| 213 | } |
---|
| 214 | |
---|
| 215 | curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); |
---|
| 216 | curl_setopt($ch, CURLOPT_URL, $url); |
---|
| 217 | curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded")); |
---|
| 218 | |
---|
| 219 | $result = curl_exec($ch); |
---|
| 220 | $errorCode = curl_getinfo($ch,CURLINFO_HTTP_CODE); |
---|
| 221 | $lastURL = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL); |
---|
| 222 | |
---|
| 223 | curl_close($ch); |
---|
| 224 | |
---|
| 225 | switch($errorCode) |
---|
| 226 | { |
---|
| 227 | case 200: |
---|
| 228 | break; |
---|
| 229 | |
---|
| 230 | case 404: |
---|
| 231 | $result = json_encode(array("error" => array("code" => 404, "message" => "RECURSO NAO ENCONTRADO => $lastURL"))); |
---|
| 232 | break; |
---|
| 233 | |
---|
| 234 | case 500: |
---|
| 235 | $result = json_encode(array("error" => array("code" => 500, "message" => "ERRO INTERNO. CONSULTE O LOG DO SERVIDOR"))); |
---|
| 236 | break; |
---|
| 237 | |
---|
| 238 | default: |
---|
| 239 | $result = json_encode(array("error" => array("code" => -1, "message" => "ERRO DESCONHECIDO. CONSULTE O LOG DO SERVIDOR"))); |
---|
| 240 | break; |
---|
| 241 | } |
---|
| 242 | |
---|
| 243 | return $result; |
---|
| 244 | } |
---|
| 245 | |
---|
| 246 | $result = callJSONRPC($serverUrl, $data, $methodType); |
---|
| 247 | |
---|
| 248 | echo $result; |
---|
| 249 | ?> |
---|
| 250 | |
---|
| 251 | </pre> |
---|
| 252 | |
---|
| 253 | </p> |
---|
| 254 | |
---|
[7808] | 255 | </div> |
---|
| 256 | |
---|
| 257 | <div id="links_rel"> |
---|
| 258 | |
---|
| 259 | <p> Referências sobre o protocolo de Comunicação JSON-RPC</p> |
---|
| 260 | |
---|
| 261 | <p> Versão utilizada no desenvolvimento desta API do Expresso é a 2.0 </p> |
---|
| 262 | |
---|
| 263 | <ul> |
---|
| 264 | <li><a href='http://www.jsonrpc.org/specification'>JSON-RPC 2.0 Specification</a></li> |
---|
| 265 | <li><a href='http://json-rpc.org/wiki/specification'>JSON-RPC 1.0 Specification</a></li> |
---|
| 266 | <li><a href='http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php'>Specification for Fault Code Interoperability</a></li> |
---|
| 267 | <li><a href='http://en.wikipedia.org/wiki/JSON-RPC#Implementations'>JSON-RPC Implementations</a></li> |
---|
| 268 | </ul> |
---|
[7816] | 269 | |
---|
| 270 | <p>Bibliotecas JavaScript Utilizadas</p> |
---|
| 271 | |
---|
| 272 | <ul> |
---|
| 273 | <li><a href='http://www.jquery.com'>JQuery-CORE</a></li> |
---|
| 274 | <li><a href='http://www.jqueryui.com'>JQuery-UI</a></li> |
---|
[7817] | 275 | <li><a href='http://embeddedjs.com'>EJS</a></li> |
---|
[7816] | 276 | </ul> |
---|
| 277 | |
---|
| 278 | <p>Linguagem de programação Server Side</p> |
---|
| 279 | <ul> |
---|
| 280 | <li><a href='http://www.php.net'>PHP</a></li> |
---|
| 281 | </ul> |
---|
| 282 | |
---|
| 283 | <p>Servidor WEB</p> |
---|
| 284 | <ul> |
---|
| 285 | <li><a href='http://www.apache.org'>Apache</a></li> |
---|
| 286 | </ul> |
---|
| 287 | |
---|
[7808] | 288 | </div> |
---|
| 289 | |
---|
| 290 | </div> |
---|
[7822] | 291 | |
---|
| 292 | <div id="footer"></div> |
---|
| 293 | |
---|
[7808] | 294 | </body> |
---|
| 295 | </html> |
---|