WX LightREST

Documentação LightREST

O componente LightREST contém todas as funções e constantes necessárias para facilitar o desenvolvimento de Web Services REST no WinDev®.

Ele disponibiliza para o desenvolvedor:

Constantes

  • Method: Métodos REST (GET, POST, ...)
  • Content: Tipo MIME do conteúdo da resposta (application/json, text/plain, ...)
  • Status: Status de execução (200=OK, 401=Não autorizado, ...)

Não é necessário conhecer os códigos de status ou os tipos MIME de cor, as constantes LightREST estão lá para preenchê-los para você.

Implementação de um servidor REST com LightREST

A implementação de um servidor REST com LightREST é feita simplesmente:

  1. Determinação das APIs a serem implantadas: Para cada API, uma rota é definida (=uma URL + um método). Cada rota é vinculada a um procedimento WinDev® que será executado pelo LightREST quando uma URL correspondente à rota for chamada. Para uma melhor legibilidade, este procedimento WinDev® será chamado de Procedimento REST nesta documentação.
  2. Implementação dos procedimentos REST: Para cada Rota+Método, o procedimento recebe um objeto lrRequest como parâmetro e deve retornar um resultado do tipo lrResponse.

Cada procedimento REST é executado pelo LightREST com um contexto Hyperfile separado, portanto não há risco de colisões quando várias chamadas REST são executadas simultaneamente (o mesmo procedimento REST pode estar em execução várias vezes em paralelo ao mesmo tempo). No entanto, é recomendável abrir sistematicamente uma conexão com o banco de dados (seja Hyperfile ou outro) para isolar bem os processamentos do ponto de vista do mecanismo do banco de dados. A abertura de uma conexão raramente é custosa em tempo, e isso permite proteger o sistema.

Se um procedimento REST precisa acessar uma variável global do projeto, é recomendável usar Semáforos. Este é um mecanismo simples de implementar e garantirá que dois procedimentos REST não acessem a mesma variável ao mesmo tempo.

Precaução importante com dados sensíveis

Atenção ao manipular IDs de banco de dados

Precaução importante (independentemente da tecnologia REST e da linguagem de programação utilizadas): A troca de dados com um cliente REST frequentemente envolve o envio de identificadores do banco de dados, para que solicitações posteriores possam ser realizadas.

Cenário:

  • Enviamos uma lista de clientes com seus respectivos IDs:
    • Jean Valjean, ID 512
    • Esmeralda, ID 234
    • Causette, ID 235
  • Um serviço REST permite recuperar as informações de um cliente. Exemplo: http://meuservidor.com/cliente/235
  • Nada impede um usuário esperto de tentar os IDs 236, 237, 238 para recuperar dados aos quais ele provavelmente não tem acesso, ou até mesmo de tentar apagá-los.

Para evitar esse tipo de vazamento de dados:

  • Nunca transmita em um resultado um ID automático do banco de dados. Prefira uma criptografia do identificador (funções Criptografar do WinDev®) ou a adição em seu banco de dados de uma coluna do tipo UUID (ou GUID) que será usada para as trocas REST.
  • Verifique sistematicamente se o usuário atual tem direito de acesso aos dados que deseja recuperar (ele pode ter usurpado um ID de banco de dados na sessão de outro usuário, ou seus direitos de acesso aos dados podem ter sido revogados enquanto isso).
  • Verifique também se o usuário tem direito de modificação em caso de solicitação de modificação (não é porque você pode ler um dado que tem o direito de escrevê-lo ou excluí-lo).
  • Como regra geral, considere todo acesso e todos os dados externos como suspeitos. A paranoia nesse domínio é geralmente uma boa companheira da segurança.

WinDev e Web Services REST: Uma combinação poderosa

O AGL (Ambiente de Desenvolvimento Integrado) WinDev® é reconhecido por sua facilidade de uso e versatilidade no desenvolvimento de software. Quando associado aos Web Services REST (Representational State Transfer), oferece uma sinergia poderosa que abre muitas portas no mundo do desenvolvimento de software.

Primeiro, o WinDev® simplifica o processo de criação de aplicativos oferecendo uma interface amigável e recursos visuais intuitivos. Sua capacidade de projetar rapidamente aplicativos de alto desempenho para várias plataformas o torna uma escolha preferida para muitos desenvolvedores. A integração nativa dos Web Services REST no ambiente de desenvolvimento WinDev® é uma grande vantagem.

Os Web Services REST, por sua vez, permitem uma comunicação simples e eficiente entre diferentes aplicativos, sejam eles na nuvem ou em servidores locais. Sua arquitetura orientada a recursos oferece notável flexibilidade, permitindo que os desenvolvedores criem serviços web modulares, fáceis de escalar e manter. O uso dos padrões HTTP e JSON torna os Web Services REST compatíveis com uma multidão de linguagens de programação e plataformas, garantindo assim máxima interoperabilidade.

Quando combinados, o WinDev® e os Web Services REST oferecem uma simbiose harmoniosa. O WinDev® facilita a criação de aplicativos que podem explorar plenamente as funcionalidades dos Web Services REST. A integração desses serviços em aplicativos WinDev® permite uma interação transparente com dados remotos, oferecendo uma experiência de usuário fluida e responsiva.

Além disso, essa combinação oferece grande flexibilidade na implantação de aplicativos. Os aplicativos WinDev® podem facilmente acessar e usar as funcionalidades dos Web Services REST, sejam eles hospedados localmente ou na nuvem, oferecendo assim maior portabilidade e acessibilidade.

Em resumo, o uso conjunto do WinDev® e dos Web Services REST representa uma grande vantagem no desenvolvimento de software moderno. Ele oferece facilidade de criação, interoperabilidade ampla, flexibilidade de implantação e uma experiência de usuário ideal, tornando esta combinação uma escolha sensata para desenvolvedores que buscam criar aplicativos robustos e de alto desempenho.